Topic 5
Queue
FIFO β First In, First Out
A queue is like a line at a counter. First person gets served first.
Operations: enqueue() β add at rear, dequeue() β remove from front
Simple Queue problem: Spaces before front are wasted after dequeue.
Solution: Circular Queue β uses % size to wrap around.
Simple Queue
Circular β wrapped
Simple vs Circular Queue
| Aspect | Simple Queue | Circular Queue |
|---|---|---|
| isFull() | rear == size - 1 | (rear+1) % size == front |
| isEmpty() | front == -1 || front > rear | front == -1 |
| Enqueue | arr[++rear] | rear = (rear+1) % size |
| Dequeue | front++ | front = (front+1) % size |
| Space reuse | β Wasted | β Wraps around |
| Last element | front > rear = empty | front = rear = -1 |
π§
% is the magic!
(rear+1) % size wraps 4 back to 0 when size is 5.π§
Both start at
front = rear = -1. First enqueue sets front = 0.