C Example Code2026-03-252 min read
Implement a Circular Queue in C using modulo arithmetic to prevent memory wastage. Complete code for circular enqueue, dequeue, and display.
Why Use a Circular Queue?
In a standard linear array queue, dequeuing elements leaves empty spaces at the front that cannot be reused once rear reaches the end. A Circular Queue solves this by wrapping indices around using modulo arithmetic:
text (ISO Standard)nextIndex = (currentIndex + 1) % CAPACITY
Complete C Implementation
c (ISO Standard)#include <stdio.h> #include <stdbool.h> #define SIZE 5 typedef struct { int items[SIZE]; int front; int rear; } CircularQueue; void initQueue(CircularQueue *q) { q->front = -1; q->rear = -1; } bool isFull(const CircularQueue *q) { return (q->front == (q->rear + 1) % SIZE); } bool isEmpty(const CircularQueue *q) { return (q->front == -1); } void enqueue(CircularQueue *q, int value) { if (isFull(q)) { printf("Circular Queue is Full! Cannot insert %d.\n", value); return; } if (isEmpty(q)) { q->front = 0; } q->rear = (q->rear + 1) % SIZE; q->items[q->rear] = value; printf("Enqueued %d at index %d.\n", value, q->rear); } int dequeue(CircularQueue *q) { if (isEmpty(q)) { printf("Circular Queue is Empty!\n"); return -1; } int data = q->items[q->front]; if (q->front == q->rear) { /* Only one element was present */ q->front = q->rear = -1; } else { q->front = (q->front + 1) % SIZE; } return data; } int main() { CircularQueue cq; initQueue(&cq); enqueue(&cq, 10); enqueue(&cq, 20); enqueue(&cq, 30); enqueue(&cq, 40); printf("Dequeued: %d\n", dequeue(&cq)); printf("Dequeued: %d\n", dequeue(&cq)); enqueue(&cq, 50); enqueue(&cq, 60); return 0; }
Sample Output
text (ISO Standard)Enqueued 10 at index 0. Enqueued 20 at index 1. Enqueued 30 at index 2. Enqueued 40 at index 3. Dequeued: 10 Dequeued: 20 Enqueued 50 at index 4. Enqueued 60 at index 0.
Complexity Analysis
- Enqueue / Dequeue:
O(1)constant time. - Space Efficiency: $100%$ capacity utilization without shifting elements.
Related Data Structures
- Compare with linear queue in Queue Implementation in C Using Array.
- Master struct data members in Structures in C.