w3resource

C++ Queue Exercises: Reverse the elements of a queue

C++ Queue: Exercise-2 with Solution

Write a C++ program to reverse the elements of a queue.

Sample Solution:

C Code:

#include <iostream>
#include <stack> // Include the stack library for using stacks

using namespace std;

const int MAX_SIZE = 100;

class Queue {
private:
  int front;
  int rear;
  int arr[MAX_SIZE];

public:
  Queue() {
    front = -1; // Initialize front index to -1
    rear = -1; // Initialize rear index to -1
  }

  bool isFull() {
    return (rear == MAX_SIZE - 1); // Check if the queue is full
  }

  bool isEmpty() {
    return (front == -1 && rear == -1); // Check if the queue is empty
  }

  void enqueue(int x) {
    if (isFull()) {
      cout << "Error: Queue is full" << endl; // Display error message if queue is full
      return;
    }
    if (isEmpty()) {
      front = 0;
      rear = 0;
    } else {
      rear++;
    }
    arr[rear] = x; // Insert the element at the rear index
  }

  void dequeue() {
    if (isEmpty()) {
      cout << "Error: Queue is empty" << endl; // Display error message if queue is empty
      return;
    }
    if (front == rear) {
      front = -1;
      rear = -1;
    } else {
      front++;
    }
  }

  int peek() {
    if (isEmpty()) {
      cout << "Error: Queue is empty" << endl; // Display error message if queue is empty
      return -1;
    }
    return arr[front]; // Return the element at the front of the queue
  }

  void display() {
    if (isEmpty()) {
      cout << "Error: Queue is empty" << endl; // Display error message if queue is empty
      return;
    }
    cout << "Queue elements are: ";
    for (int i = front; i <= rear; i++) {
      cout << arr[i] << " "; // Display all elements in the queue
    }
    cout << endl;
  }

  // Function to reverse the elements of the queue
  void reverseQueue(Queue & q) {
    if (q.isEmpty()) {
      cout << "Error: Queue is empty" << endl; // Display error message if queue is empty
      return;
    }
    stack < int > s; // Create a stack to store elements temporarily
    while (!q.isEmpty()) {
      s.push(q.peek()); // Push each element of the queue to the stack
      q.dequeue(); // Remove the element from the queue
    }
    while (!s.empty()) {
      q.enqueue(s.top()); // Enqueue the elements from the stack to the queue
      s.pop(); // Pop the element from the stack
    }
  }
};

int main() {
  cout << "Initialize a Queue." << endl;
  Queue q;
  cout << "\nInsert some elements into the queue:" << endl;
  q.enqueue(1);
  q.enqueue(2);
  q.enqueue(3);
  q.enqueue(4);
  q.enqueue(5);
  q.display();
  q.reverseQueue(q); // Reverse the elements of the queue
  cout << "\nReverse Queue elements:\n";
  q.display();
  return 0;
}

Sample Output:

Initialize a Queue.

Insert some elements into the queue:
Queue elements are: 1 2 3 4 5

Reverse Queue elements:
Queue elements are: 5 4 3 2 1

Flowchart:

Flowchart: Reverse the elements of a queue.
Flowchart: Reverse the elements of a queue.
Flowchart: Reverse the elements of a queue.

CPP Code Editor:

Contribute your code and comments through Disqus.

Previous C++ Exercise: Implement a queue using an array.
Next C++ Exercise: Sort the elements of a queue.

What is the difficulty level of this exercise?



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/cpp-exercises/queue/cpp-queue-exercise-2.php