Skip to main content

Circular queue vs linear queue

Short answer

Linear queue does not reuse freed front cells; circular queue wraps rear modulo N. Example: N=5, insert 10,20,30,40,50, delete two, insert 60 — linear overflows despite free space; circular succeeds, rear wraps to 0.

Explain how a circular queue differs from a linear queue with suitable example.

A linear queue uses an array in a straight line: rear only moves forward and positions before front are never reused. A circular queue joins the last position to the first, so indices wrap around with (index + 1) % N.

Linear queueCircular queue
rear increases up to N − 1 and stopsrear wraps to 0 using (rear + 1) % N
Freed cells at the front are not reusedFreed cells are reused
Full test: rear == N - 1Full test: (rear + 1) % N == front
Empty test: front > rearEmpty test: front == -1
Can report overflow even when cells are freeOverflows only when all cells are used
Simple to implementSlightly more complex
Poor memory useBetter memory use

Example (N = 5): insert 10, 20, 30, 40, 50, delete two, insert 60

Linear queue

OperationArray contents (index 0 → N-1)frontrear
enqueue(10)10 _ _ _ _00
enqueue(20)10 20 _ _ _01
enqueue(30)10 20 30 _ _02
enqueue(40)10 20 30 40 _03
enqueue(50)10 20 30 40 5004
dequeue() returns 10_ 20 30 40 5014
dequeue() returns 20_ _ 30 40 5024
enqueue(60): rear = 4 → Queue overflow_ _ 30 40 5024

Two cells are free, yet enqueue(60) fails.

Circular queue

OperationArray contents (index 0 → N-1)frontrear
enqueue(10)10 _ _ _ _00
enqueue(20)10 20 _ _ _01
enqueue(30)10 20 30 _ _02
enqueue(40)10 20 30 40 _03
enqueue(50)10 20 30 40 5004
dequeue() returns 10_ 20 30 40 5014
dequeue() returns 20_ _ 30 40 5024
enqueue(60)60 _ 30 40 5020

Here rear wraps to index 0 and 60 is stored.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Data Structure and Algorithm chapter 2 questions →