# Reversing a Queue using another Queue

Given a queue. The task is to reverse the queue using another another empty queue.

Examples:

```Input: queue[] = {1, 2, 3, 4, 5}
Output: 5 4 3 2 1

Input: queue[] = {10, 20, 30, 40}
Output: 40 30 20 10
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Given a queue and an empty queue.
• The last element of the queue should be the first element of the new queue.
• To get the last element there is a need to pop the queue one by one and add it to the end of the queue, size – 1 times.
• So after that, we will get the last element in front of the queue. Now pop that element out and add it to the new queue. Repeat the steps s – 1 times where s is the original size of the queue.

Below is the implementation of the approach:

## C++

 `// C++ implementation of the above approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the reversed queue ` `queue<``int``> reverse(queue<``int``> q) ` `{ ` `    ``// Size of ueue ` `    ``int` `s = q.size(); ` ` `  `    ``// Second queue ` `    ``queue<``int``> ans; ` ` `  `    ``for` `(``int` `i = 0; i < s; i++) { ` ` `  `        ``// Get the last element to the ` `        ``// front of queue ` `        ``for` `(``int` `j = 0; j < q.size() - 1; j++) { ` `            ``int` `x = q.front(); ` `            ``q.pop(); ` `            ``q.push(x); ` `        ``} ` ` `  `        ``// Get the last element and ` `        ``// add it to the new queue ` `        ``ans.push(q.front()); ` `        ``q.pop(); ` `    ``} ` `    ``return` `ans; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``queue<``int``> q; ` ` `  `    ``// Insert elements ` `    ``q.push(1); ` `    ``q.push(2); ` `    ``q.push(3); ` `    ``q.push(4); ` `    ``q.push(5); ` ` `  `    ``q = reverse(q); ` ` `  `    ``// Print the queue ` `    ``while` `(!q.empty()) { ` `        ``cout << q.front() << ``" "``; ` `        ``q.pop(); ` `    ``} ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the above approach ` `import` `java.util.*; ` `class` `GFG ` `{ ` ` `  `// Function to return the reversed queue ` `static` `Queue reverse(Queue q) ` `{ ` `    ``// Size of ueue ` `    ``int` `s = q.size(); ` ` `  `    ``// Second queue ` `    ``Queue ans = ``new` `LinkedList<>(); ` ` `  `    ``for` `(``int` `i = ``0``; i < s; i++) ` `    ``{ ` ` `  `        ``// Get the last element to the ` `        ``// front of queue ` `        ``for` `(``int` `j = ``0``; j < q.size() - ``1``; j++)  ` `        ``{ ` `            ``int` `x = q.peek(); ` `            ``q.remove(); ` `            ``q.add(x); ` `        ``} ` ` `  `        ``// Get the last element and ` `        ``// add it to the new queue ` `        ``ans.add(q.peek()); ` `        ``q.remove(); ` `    ``} ` `    ``return` `ans; ` `} ` ` `  `// Driver Code ` `public` `static` `void` `main(String[] args)  ` `{ ` `    ``Queue q = ``new` `LinkedList<>(); ` ` `  `    ``// Insert elements ` `    ``q.add(``1``); ` `    ``q.add(``2``); ` `    ``q.add(``3``); ` `    ``q.add(``4``); ` `    ``q.add(``5``); ` ` `  `    ``q = reverse(q); ` ` `  `    ``// Print the queue ` `    ``while` `(!q.isEmpty())  ` `    ``{ ` `        ``System.out.print(q.peek() + ``" "``); ` `        ``q.remove(); ` `    ``} ` `    ``} ` `}  ` ` `  `// This code is contributed by Princi Singh `

## Python3

 `# Python3 implementation of the above approach ` `from` `collections ``import` `deque ` ` `  `# Function to return the reversed queue ` `def` `reverse(q): ` `     `  `    ``# Size of ueue ` `    ``s ``=` `len``(q) ` ` `  `    ``# Second queue ` `    ``ans ``=` `deque() ` ` `  `    ``for` `i ``in` `range``(s): ` ` `  `        ``# Get the last element to the ` `        ``# front of queue ` `        ``for` `j ``in` `range``(s ``-` `1``): ` `            ``x ``=` `q.popleft() ` `            ``q.appendleft(x) ` ` `  `        ``# Get the last element and ` `        ``# add it to the new queue ` `        ``ans.appendleft(q.popleft()) ` `    ``return` `ans ` ` `  `# Driver Code ` `q ``=` `deque() ` ` `  `# Insert elements ` `q.append(``1``) ` `q.append(``2``) ` `q.append(``3``) ` `q.append(``4``) ` `q.append(``5``) ` ` `  `q ``=` `reverse(q) ` ` `  `# Print the queue ` `while` `(``len``(q) > ``0``): ` `    ``print``(q.popleft(), end ``=` `" "``) ` ` `  `# This code is contributed by Mohit Kumar `

## C#

 `// C# Program to print the given pattern ` `using` `System; ` `using` `System.Collections.Generic;  ` `     `  `class` `GFG ` `{ ` ` `  `// Function to return the reversed queue ` `static` `Queue<``int``> reverse(Queue<``int``> q) ` `{ ` `    ``// Size of ueue ` `    ``int` `s = q.Count; ` ` `  `    ``// Second queue ` `    ``Queue<``int``> ans = ``new` `Queue<``int``>(); ` ` `  `    ``for` `(``int` `i = 0; i < s; i++) ` `    ``{ ` ` `  `        ``// Get the last element to the ` `        ``// front of queue ` `        ``for` `(``int` `j = 0; j < q.Count - 1; j++)  ` `        ``{ ` `            ``int` `x = q.Peek(); ` `            ``q.Dequeue(); ` `            ``q.Enqueue(x); ` `        ``} ` ` `  `        ``// Get the last element and ` `        ``// add it to the new queue ` `        ``ans.Enqueue(q.Peek()); ` `        ``q.Dequeue(); ` `    ``} ` `    ``return` `ans; ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main(String[] args)  ` `{ ` `    ``Queue<``int``> q = ``new` `Queue<``int``>(); ` ` `  `    ``// Insert elements ` `    ``q.Enqueue(1); ` `    ``q.Enqueue(2); ` `    ``q.Enqueue(3); ` `    ``q.Enqueue(4); ` `    ``q.Enqueue(5); ` ` `  `    ``q = reverse(q); ` ` `  `    ``// Print the queue ` `    ``while` `(q.Count!=0)  ` `    ``{ ` `        ``Console.Write(q.Peek() + ``" "``); ` `        ``q.Dequeue(); ` `    ``} ` `    ``} ` `} ` ` `  `// This code is contributed by Princi Singh `

Output:

```5 4 3 2 1
```

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.