Queue in C
A Queue is a linear data structure that follows the FIFO (First In, First Out) rule.
It is used when data must be processed in the exact order it arrives, like ticket counters, printers, task scheduling.
What is a Queue?
A queue inserts elements from one end (rear) and removes from the other (front). It works like a real-life line of people.
- Insertion → Enqueue
- Deletion → Dequeue
- Front → first element
- Rear → last element
Applications of Queue
- CPU Scheduling
- Printer Queue
- Call center systems
- Network packet management
- Breadth-First Search (BFS)
Types of Queues
- Simple Queue – basic FIFO
- Circular Queue – prevents wasted space
- Priority Queue – elements with priority
- Double-Ended Queue (Deque) – insert/delete from both ends
Queue Representation (Using Array)
A simple queue uses:
- front → index of first item
- rear → index of last item
- Array → stores elements
- Condition for full →
rear == size - 1 - Condition for empty →
front == -1
Queue Operations – 5 Examples
Example 1 – Enqueue Operation
#include <stdio.h>
#define SIZE 5
int queue[SIZE];
int front = -1, rear = -1;
void enqueue(int val){
if(rear == SIZE-1){
printf("Queue Full\n");
return;
}
if(front == -1) front = 0;
queue[++rear] = val;
}
int main(){
enqueue(10);
enqueue(20);
printf("Inserted: %d %d", queue[0], queue[1]);
return 0;
}
Example 2 – Dequeue Operation
#include <stdio.h>
#define SIZE 5
int queue[SIZE];
int front = -1, rear = -1;
int dequeue(){
if(front == -1 || front > rear){
printf("Queue Empty\n");
return -1;
}
return queue[front++];
}
int main(){
queue[0]=10; queue[1]=20; front=0; rear=1;
printf("Removed: %d", dequeue());
return 0;
}
Example 3 – Display Queue
#include <stdio.h>
#define SIZE 5
int q[SIZE] = {10,20,30};
int front = 0, rear = 2;
void display(){
for(int i=front;i<=rear;i++)
printf("%d ", q[i]);
}
int main(){
display();
return 0;
}
Example 4 – Check Full / Empty
#include <stdio.h>
#define SIZE 5
int front=-1, rear=-1;
int isEmpty(){
return (front==-1 || front>rear);
}
int isFull(){
return (rear==SIZE-1);
}
int main(){
printf("Empty: %d\n", isEmpty());
return 0;
}
Example 5 – Simple Queue Menu
#include <stdio.h>
#define SIZE 5
int q[SIZE];
int front=-1, rear=-1;
void enqueue(int x){
if(rear==SIZE-1){ printf("Full\n"); return; }
if(front==-1) front=0;
q[++rear]=x;
}
void dequeue(){
if(front==-1 || front>rear){ printf("Empty\n"); return; }
printf("Removed %d\n", q[front++]);
}
int main(){
enqueue(5);
enqueue(10);
dequeue();
return 0;
}