« Reverse a Queue

Reverse Queue

You have been given a queue that can store integers as the data. You are required to write a function that reverses the populated queue itself without using any other data structures.

Input Format:

The first list of input contains an integer 't' denoting the number of test cases/queries to be run. Then the test cases follow.

The first line input for each test case/query contains an integer N, denoting the total number of elements in the queue.

The second line of input contains N integers separated by a single space, representing the order in which the elements are enqueued into the queue. Output Format: For each test case/query, the only line of output prints the order in which the queue elements are dequeued, all of them separated by a single space.

Output for every test case/query will be printed on a new line.

Note:

You are not required to print the expected output explicitly, it has already been taken care of. Just make the changes in the input queue itself.

Constraints:

1 <= t <= 100

1 <= N <= 10^4

-2^31 <= data <= 2^31 - 1

Time Limit: 1sec

Sample Input 1:

1

6

1 2 3 4 5 10

Note:

Here, 1 is at the front and 10 is at the rear of the queue.

Sample Output 1:

10 5 4 3 2 1

Sample Input 2:

2

5

2 8 15 1 10

3

10 20 30

Sample Output 2:

10 1 15 8 2

30 20 10

1#include <iostream>
2using namespace std;
3
4#include<queue>
5
6void reverseQueue(queue<int> &input) {
7 // Write your code here
8 if(input.size() == 0){
9 return;
10 }
11
12 int top = input.front();
13 input.pop();
14 reverseQueue(input);
15 input.push(top);
16}
17
18int main() {
19 int t;
20 cin >> t;
21
22 while (t--) {
23 queue<int> q;
24 int size;
25 cin >> size;
26
27 for (int i = 0, val; i < size; i++) {
28 cin >> val;
29 q.push(val);
30 }
31
32 reverseQueue(q);
33 while (!q.empty()) {
34 cout << q.front() << " ";
35 q.pop();
36 }
37
38 cout << "\n";
39 }
40}