Queue
A queue is a FIFO (First In, First Out) structure: insert at the rear, delete from the front.
Circular Queue
A simple array queue wastes space after deletions. A circular queue wraps around using the modulo operator.
#include <stdio.h>
#define N 5
int q[N], front = -1, rear = -1;
void enqueue(int x) {
if ((rear + 1) % N == front) { printf("Queue full\n"); return; }
if (front == -1) front = 0;
rear = (rear + 1) % N;
q[rear] = x;
}
int dequeue() {
if (front == -1) { printf("Queue empty\n"); return -1; }
int x = q[front];
if (front == rear) front = rear = -1; // last element removed
else front = (front + 1) % N;
return x;
}
int main() {
enqueue(1); enqueue(2); enqueue(3);
printf("%d ", dequeue());
printf("%d\n", dequeue());
enqueue(4);
printf("front = %d\n", q[front]);
return 0;
}
1 2
front = 3
Types of Queues
| Type | Description |
|---|---|
| Simple queue | Insert at rear, delete at front |
| Circular queue | Rear wraps to the start |
| Deque | Insert/delete at both ends |
| Priority queue | Highest-priority element leaves first (usually a heap) |
Uses include CPU scheduling, printer spooling, BFS and buffering.
Track your progress through the Data Structures course