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;
// Function to enqueue an element
void enqueue(int value) {
if (rear == MAX - 1) {
printf("Queue Overflow\n");
return;
}
if (front == -1)
front = 0;
queue[++rear] = value;
}
// Function to dequeue an element
int dequeue() {
if (front == -1 || front > rear) {
printf("Queue Underflow\n");
return -1;
}
return queue[front++];
}
// Function to display the queue
void displayQueue() {
if (front == -1 || front > rear) {
printf("Queue is empty\n");
return;
}
for (int i = front; i <= rear; i++)
printf("%d ", queue[i]);
printf("\n");
}
// Function to reverse the queue using a temporary stack
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 pointers
front = rear = -1;
// Enqueue elements back from stack (reversed order)
while (top != -1) {
enqueue(stack[top--]);
}
}
int main() {
int n, value;
printf("Enter number of elements in queue: ");
scanf("%d", &n);
printf("Enter %d elements:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &value);
enqueue(value);
}
printf("Original Queue: ");
displayQueue();
reverseQueue();
printf("Reversed Queue: ");
displayQueue();
return 0;
}
