📖 Scenario: Imagine a line at a ticket counter where people join at the end of the line. This line is called a queue. We will create a queue using an array and add people (numbers) to the end of this queue.
🎯 Goal: You will build a simple queue using an array and write the code to add (enqueue) elements to the queue.
📋 What You'll Learn
Create an integer array called queue with size 5
Create an integer variable called rear initialized to -1
Write a function called enqueue that adds an integer to the queue if there is space
Print the queue elements after adding new elements
💡 Why This Matters
🌍 Real World
Queues are used in real life for lines, like waiting for a bus or at a bank. In computers, queues help manage tasks in order.
💼 Career
Understanding queues is important for software jobs that involve task scheduling, resource management, and data processing.
Progress0 / 4 steps
1
Create the queue array and rear variable
Create an integer array called queue with size 5 and an integer variable called rear initialized to -1.
DSA C
Hint
Use int queue[5]; to create the array and int rear = -1; to start the rear pointer.
2
Create the enqueue function header
Write the function header for void enqueue(int value) that will add a value to the queue.
DSA C
Hint
Start the function with void enqueue(int value) {
3
Implement enqueue logic to add element
Inside the enqueue function, check if rear is less than 4. If yes, increase rear by 1 and add value to queue[rear]. Close the function with a closing brace }.
DSA C
Hint
Use if (rear < 4) to check space, then rear++ and assign queue[rear] = value;.
4
Add elements and print the queue
Call enqueue three times with values 10, 20, and 30. Then use a for loop from 0 to rear to print each element in queue separated by spaces.
DSA C
Hint
Call enqueue(10); enqueue(20); enqueue(30); then print elements with a for loop and printf.
Practice
(1/5)
1. What does the enqueue operation do in a queue data structure?
easy
A. Adds an element to the rear of the queue
B. Removes an element from the front of the queue
C. Checks if the queue is empty
D. Returns the size of the queue
Solution
Step 1: Understand the queue operations
In a queue, enqueue means adding an element, while dequeue means removing one.
Step 2: Identify the position of addition
Elements are always added at the rear (end) of the queue during enqueue.
Final Answer:
Adds an element to the rear of the queue -> Option A
Quick Check:
Enqueue = Add rear [OK]
Hint: Enqueue always adds at the back of the queue [OK]
Common Mistakes:
Confusing enqueue with dequeue operation
Thinking enqueue removes elements
Assuming enqueue adds at the front
2. Which of the following is the correct syntax to enqueue an element 10 in a queue implemented using an array named queue with rear index rear in C?
easy
A. queue[rear] = ++10;
B. queue[rear++] = 10;
C. queue[rear] = 10++;
D. queue[++rear] = 10;
Solution
Step 1: Understand post-increment vs pre-increment
Post-increment (rear++) uses rear as index then increments it. Pre-increment (++rear) increments rear first then uses it as index.
Step 2: Choose correct index update for enqueue
To add at current rear position and then move rear forward, use post-increment: queue[rear++] = 10;.
Final Answer:
queue[rear++] = 10; -> Option B
Quick Check:
Post-increment rear after assignment [OK]
Hint: Use rear++ to assign then move rear forward [OK]
Common Mistakes:
Using pre-increment causing skip of first index
Trying to increment the value instead of index
Syntax errors with invalid increments
3. What will be the state of the queue array after executing the following code?
int queue[5];
int rear = -1;
queue[++rear] = 5;
queue[++rear] = 10;
queue[++rear] = 15;
medium
A. [5, 10, 0, 15, 0]
B. [0, 5, 10, 15, 0]
C. [5, 10, 15, 0, 0]
D. [15, 10, 5, 0, 0]
Solution
Step 1: Trace each enqueue operation
Initially, rear = -1. First enqueue: ++rear = 0, queue[0] = 5. Second enqueue: ++rear = 1, queue[1] = 10. Third enqueue: ++rear = 2, queue[2] = 15.
Step 2: Determine final queue array state
Positions 0,1,2 have 5,10,15 respectively. Others remain 0 (default uninitialized).
Final Answer:
[5, 10, 15, 0, 0] -> Option C
Quick Check:
Enqueue adds sequentially at indices 0,1,2 [OK]
Hint: Pre-increment rear before assignment fills array from index 0 [OK]
Common Mistakes:
Confusing post-increment with pre-increment
Assuming queue starts at index 1
Ignoring initial rear value -1
4. Identify the error in the following enqueue function for a queue implemented using an array and fix it:
void enqueue(int queue[], int *rear, int value) {
queue[*rear] = value;
(*rear)++;
}
medium
A. The value should be assigned after incrementing rear twice
B. The rear should not be incremented at all
C. The function should decrement rear instead
D. The rear should be incremented before assignment
Solution
Step 1: Analyze the enqueue logic
The function assigns value at current rear index, then increments rear. This causes the first element to be placed at rear=0 if rear was 0, which is correct only if rear points to next free slot.
Step 2: Correct the order for standard enqueue
Usually, rear points to last filled index, so increment rear first, then assign: queue[++(*rear)] = value;.
Final Answer:
The rear should be incremented before assignment -> Option D
Quick Check:
Increment rear first, then assign value [OK]
Hint: Increment rear before assignment to avoid overwrite [OK]
Common Mistakes:
Assigning value before incrementing rear
Incrementing rear twice accidentally
Decrementing rear instead of incrementing
5. Given a circular queue of size 5 with front = 3 and rear = 1, which of the following enqueue operations is valid and will not cause overflow?
hard
A. Enqueue at rear = 2
B. Enqueue at rear = 3
C. Enqueue at rear = 4
D. Enqueue at rear = 0
Solution
Step 1: Understand circular queue indexing
Queue size = 5, indices 0 to 4. front = 3, rear = 1 means elements occupy positions from front to rear wrapping around.
Step 2: Check next rear position for enqueue
Next rear = (rear + 1) % size = (1 + 1) % 5 = 2. If next rear equals front, queue is full (overflow). Here, next rear 2 != front 3, so enqueue at 2 is valid. But options show enqueue at rear = 2, 3, 4, 0. We must check which is correct next rear.
Step 3: Validate each option
Enqueue at rear = 2: rear=2 is next rear, valid. Enqueue at rear = 3: rear=3 equals front, overflow. Enqueue at rear = 4: rear=4 is not next rear, invalid. Enqueue at rear = 0: rear=0 is not next rear, invalid.
Final Answer:
Enqueue at rear = 2 -> Option A
Quick Check:
Next rear = (rear+1)%size = 2, enqueue valid [OK]
Hint: Next rear = (rear + 1) mod size; must not equal front [OK]
Common Mistakes:
Ignoring circular wrap-around logic
Enqueueing at front index causing overflow
Assuming rear can be any index
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.