SYBCom(CA) DS Practical Slip 2 Q.B

Write a program to reverse the elements of a queue (Use Static implementation of
Queue)

#include <stdio.h>
#define MAX 100

int queue[MAX];
int front = -1, rear = -1;

// Insert element into queue
void enqueue(int value) {
    if (rear == MAX - 1) {
        printf("Queue Overflow\n");
        return;
    }
    if (front == -1)
        front = 0;
    queue[++rear] = value;
}

// Delete element from queue
int dequeue() {
    if (front == -1 || front > rear) {
        printf("Queue Underflow\n");
        return -1;
    }
    return queue[front++];
}

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

// Reverse queue using stack (array)
void reverseQueue() {
    if (front == -1 || front > rear) {
        printf("Queue is empty\n");
        return;
    }

    int stack[MAX];
    int top = -1;

    // Push all queue elements into stack
    while (front <= rear) {
        stack[++top] = dequeue();
    }

    // Reset queue
    front = rear = -1;

    // Push back into queue (reversed order)
    while (top != -1) {
        enqueue(stack[top--]);
    }
}

int main() {
    int n, value;

    printf("Enter number of elements: ");
    scanf("%d", &n);

    printf("Enter %d elements:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &value);
        enqueue(value);
    }

    printf("Original Queue: ");
    display();

    reverseQueue();

    printf("Reversed Queue: ");
    display();

    return 0;
}
Spread the love

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top