A circular queue is a type of queue where the last position is connected back to the first position to make a circle. This helps use the array space efficiently by reusing empty spots after dequeue operations.
Click to reveal answer
beginner
How do you check if a circular queue is full?
The queue is full when the next position of rear is equal to front. In formula: (rear + 1) % size == front.
Click to reveal answer
beginner
How do you check if a circular queue is empty?
The queue is empty when front and rear are both -1 or front == -1. This means no elements are in the queue.
Click to reveal answer
beginner
What happens to front and rear pointers when you enqueue in an empty circular queue?
Both front and rear are set to 0 because the first element is added at the start of the array.
Click to reveal answer
beginner
Why is modulo (%) operator used in circular queue implementation?
Modulo operator helps wrap around the array index to the start when the end is reached, making the queue circular.
Click to reveal answer
What condition indicates that a circular queue is full?
Arear == -1
Bfront == rear
C(rear + 1) % size == front
Dfront == -1
✗ Incorrect
A circular queue is full when the next position of rear is front, meaning no space to add new elements.
What is the initial value of front and rear in an empty circular queue?
Afront = -1, rear = -1
Bfront = 1, rear = 1
Cfront = 0, rear = 0
Dfront = size, rear = size
✗ Incorrect
Both front and rear are set to -1 to indicate the queue is empty.
When enqueuing the first element in a circular queue, what happens?
Afront and rear both set to 0
Bfront and rear remain -1
Crear set to size - 1
Dfront set to size - 1
✗ Incorrect
Both front and rear are set to 0 to point to the first element's position.
Why do we use modulo operator (%) in circular queue?
ATo increase the size of the queue
BTo wrap around the index to the start of the array
CTo check if queue is empty
DTo check if queue is full
✗ Incorrect
Modulo operator wraps the index to the start when it reaches the end, making the queue circular.
What happens to front pointer when you dequeue the last element in a circular queue?
Afront becomes equal to rear
Bfront moves forward by 1
Cfront stays the same
Dfront becomes -1 indicating empty queue
✗ Incorrect
When the last element is dequeued, front and rear are reset to -1 to show the queue is empty.
Explain how enqueue and dequeue operations work in a circular queue implemented using an array.
Think about how the pointers move and wrap around the array.
You got /4 concepts.
Describe why a circular queue is more efficient than a simple linear queue when using arrays.
Consider what happens when elements are removed from the front in a linear queue.
You got /4 concepts.
Practice
(1/5)
1. What is the main advantage of using a circular queue over a simple linear queue when implemented using an array?
easy
A. It allows storing different data types in the same queue.
B. It efficiently utilizes the array space by reusing empty slots after dequeue operations.
C. It automatically sorts the elements in the queue.
D. It uses less memory than a linear queue.
Solution
Step 1: Understand linear queue limitation
In a linear queue using an array, once the rear reaches the end, no more elements can be added even if there are empty slots at the front due to dequeues.
Step 2: Circular queue advantage
A circular queue connects the end of the array back to the front, allowing reuse of empty slots and efficient space usage.
Final Answer:
It efficiently utilizes the array space by reusing empty slots after dequeue operations. -> Option B
Quick Check:
Space reuse = Advantage [OK]
Hint: Circular queue reuses space after dequeue, unlike linear queue [OK]
Common Mistakes:
Thinking circular queue sorts elements
Believing circular queue uses less memory
Confusing data type flexibility with queue type
2. Which of the following is the correct condition to check if a circular queue is full when using an array of size n with front and rear pointers?
easy
A. front == (rear + 1) % n
B. rear == (front + 1) % n
C. front == rear
D. rear == n - 1
Solution
Step 1: Understand circular queue full condition
In a circular queue, the queue is full when the next position of rear (rear + 1 modulo n) is equal to front.
Step 2: Apply modulo for wrap-around
Using modulo ensures the rear wraps to the start of the array, so full condition is front == (rear + 1) % n.
Final Answer:
front == (rear + 1) % n -> Option A
Quick Check:
Full if next rear equals front [OK]
Hint: Full when front is just ahead of rear in circular manner [OK]
Common Mistakes:
Using rear == (front + 1) % n (wrong direction)
Checking front == rear (means empty, not full)
Ignoring modulo wrap-around
3. Consider a circular queue of size 5 (indices 0 to 4). Initially, front = -1 and rear = -1. The following operations are performed: enqueue(10), enqueue(20), enqueue(30), dequeue(), enqueue(40), enqueue(50), enqueue(60) What will be the values of front and rear after these operations?
Wrap rear with modulo, front moves on dequeue [OK]
Hint: Update rear with modulo; front moves on dequeue [OK]
Common Mistakes:
Not wrapping rear index after reaching array end
Not updating front after dequeue
Confusing initial front and rear values
4. Given the following snippet of a circular queue enqueue method, identify the bug:
void enqueue(int value) {
if ((rear + 1) % size == front) {
System.out.println("Queue is full");
return;
}
if (front == -1) front = 0;
rear = (rear + 1) % size;
queue[rear] = value;
}
medium
A. The front pointer should be updated after enqueue.
B. The condition to check full queue is incorrect.
C. The rear pointer is updated before inserting the value.
D. The method does not handle empty queue initialization.
Solution
Step 1: Identify standard enqueue order
In standard circular queue implementations (wasting one slot to distinguish empty/full), the value is inserted at the current rear first: queue[rear] = value; then rear = (rear + 1) % size.
Step 2: Problem with given code
This code updates rear first, then inserts. This causes false positives in the full check after dequeue operations make the queue empty, as front == (old rear + 1) % size, matching the full condition.
Final Answer:
The rear pointer is updated before inserting the value. -> Option C
Quick Check:
Standard order: insert then increment rear [OK]
Hint: Check pointer updates order carefully in enqueue method [OK]
Common Mistakes:
Confusing front and rear updates
Misunderstanding full condition logic
Ignoring initial empty queue setup
5. You have a circular queue of size 6. After performing several enqueue and dequeue operations, the front is at index 4 and rear is at index 2. Which of the following statements is true about the queue's current state?
hard
A. The queue has elements from index 4 to 5 and 0 to 2.
B. The queue is full.
C. The queue is empty.
D. The queue has elements only between indices 2 and 4.
Solution
Step 1: Understand circular queue indexing
With front at 4 and rear at 2 in a size 6 queue, the queue wraps around the end of the array.
Step 2: Identify occupied indices
Elements are from front (4) to end (5), then from start (0) to rear (2), so indices 4,5,0,1,2 hold elements.
Final Answer:
The queue has elements from index 4 to 5 and 0 to 2. -> Option A
Quick Check:
Wrap-around means elements split across array ends [OK]
Hint: Front > rear means queue wraps around array end [OK]
Common Mistakes:
Assuming front > rear means empty queue
Thinking queue is full when front > rear
Ignoring wrap-around in circular queue
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.