Write a C program for Queue Implementation.

FUNCTION is_full(front, rear)
    IF (rear + 1) MOD MAX_SIZE == front THEN
    	RETURN True    	
    ELSE
        RETURN False
    ENDIF
ENDFUNCTION 


FUNCTION enqueue(queue, front, rear, data)
    IF is_full(front, rear) == True THEN
        PRINT("Queue is full")
    ELSE
        rear = (rear + 1) MOD MAX_SIZE
    	queue[rear] = data
        IF front = -1 THEN // First item to be queued
            front = 0
        ENDIF
    ENDIF
    RETURN (front, rear)
ENDFUNCTION

FUNCTION dequeue(queue, front, rear)
    IF is_empty(rear) == True THEN
	PRINT("Queue is empty - nothing to dequeue")
        dequeued_item = Null
    ELSE
        dequeued_item = queue[front]
        // Check if the queue is empty
        IF front == rear THEN
            front = -1
            rear = -1
        ELSE
            front = (front + 1) MOD maxsize 
        ENDIF
    ENDIF
    RETURN (dequeued_item, front, rear)
ENDFUNCTION

Figure: Queue Implementation

#include <stdio.h>

int queue[4];
int front = -1;
int rear = -1;

void enqueue(int value) {
    if (rear == 4 - 1) {
        printf("Queue is full. Cannot enqueue.\n");
        return;
    }
    if (front == -1)
        front = 0;
    rear++;
    queue[rear] = value;
}

void dequeue() {
    if (front == -1 || front > rear) {
        printf("Queue is empty. Cannot dequeue.\n");
        return;
    }
    front++;
}

int getFront() {
    if (front == -1 || front > rear) {
        printf("Queue is empty. No front element.\n");
        return -1;
    }
    return queue[front];
}

int isEmpty() {
    if (front == -1 || front > rear)
        return 1;
    else
        return 0;
}

int getSize() {
    if (front == -1)
        return 0;
    else
        return rear - front + 1;
}

void display() {
    if (front == -1 || front > rear) {
        printf("Queue is empty. Nothing to display.\n");
        return;
    }
    printf("Queue elements: ");
    for (int i = front; i <= rear; i++)
        printf("%d ", queue[i]);
    printf("\n");
}

int main() {
    //!showArray(queue)
    enqueue(10);
    display();
    enqueue(20);
    display();
    enqueue(30);
    display();
    enqueue(40);
    display();
    enqueue(50);
    display(); 
    printf("Front element: %d\n", getFront()); 
    printf("Queue size: %d\n", getSize()); 
    printf("Is queue empty? %s\n", isEmpty() ? "Yes" : "No");
    dequeue();
    display(); 
    dequeue();
    display(); 
    dequeue();
    display();
    dequeue();
    display();
    dequeue();
    return 0;
} 

Queue elements: 10 
Queue elements: 10 20 
Queue elements: 10 20 30 
Queue elements: 10 20 30 40 
Queue is full. Cannot enqueue.
Queue elements: 10 20 30 40 
Front element: 10
Queue size: 4
Is queue empty? No
Queue elements: 20 30 40 
Queue elements: 30 40 
Queue elements: 40 
Queue is empty. Nothing to display.
Queue is empty. Cannot dequeue.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.