Skip to main content

Circular queue algorithm with conditions

Short answer

A circular queue uses an array, empty when front==-1, full when (rear+1)%N==front. Insertion: if not full increment rear modulo N and store. Deletion: if not empty retrieve front, increment front modulo N, reset both to -1 if last element removed.

Write an algorithm to implement circular queue with the condition for insertion, deletion, queue full and queue empty.

A circular queue stores items in an array CQ[0..N-1] and uses (index + 1) % N so that the position after N − 1 is 0.

Conditions

ConditionTest
Initially emptyfront = rear = -1
Queue emptyfront == -1
Queue full(rear + 1) % N == front
Insertion allowedqueue not full
Deletion allowedqueue not empty
Exactly one elementfront == rear (after deleting it, reset both to −1)

Algorithm for insertion

ENQUEUE(CQ, x)
1. if (rear + 1) % N == front:  print "Queue full"; return
2. if front == -1:  front = 0;  rear = 0
   else             rear = (rear + 1) % N
3. CQ[rear] = x

Algorithm for deletion

DEQUEUE(CQ)
1. if front == -1:  print "Queue empty"; return
2. x = CQ[front]
3. if front == rear:  front = -1;  rear = -1
   else               front = (front + 1) % N
4. return x

Example (N = 4)

OperationArray contents (index 0 → N-1)frontrear
enqueue(1)1 _ _ _00
enqueue(2)1 2 _ _01
enqueue(3)1 2 3 _02
enqueue(4)1 2 3 403
enqueue(5): (rear+1)%4 = 0 = front → Queue overflow1 2 3 403
dequeue() returns 1_ 2 3 413
enqueue(5)5 2 3 410
dequeue() returns 25 _ 3 420
dequeue() returns 35 _ _ 430
dequeue() returns 45 _ _ _00
dequeue() returns 5_ _ _ _-1-1
dequeue(): Queue underflow_ _ _ _-1-1

All N cells can be used, and the wrap-around of rear shows the circular behaviour.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Data Structure and Algorithm chapter 2 questions →