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.

Applications of Queue

Types of Queues

Queue Representation (Using Array)

A simple queue uses:

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;
}