The Wayback Machine - https://web.archive.org/web/20210503142749/https://www.geeksforgeeks.org/reversing-a-stack-with-the-help-of-another-empty-stack/
Skip to content
Related Articles

Related Articles

Reversing a Stack with the help of another empty Stack
  • Last Updated : 03 May, 2021

Given a Stack consisting of N elements, the task is to reverse the Stack using an extra stack.

Examples:

Input: stack = {1, 2, 3, 4, 5}
Output:
1
2
3
4
5
Explanation:
Input Stack:
5
4
3
2
1
Reversed Stack:
1
2
3
4
5

Input: stack = {1, 3, 5, 4, 2}
Output:
1
3
5
4
2

Approach: Follow the steps below to solve the problem:



Below is the implementation of the above approach.

C++




// C++ program to reverse a stack
// by using an extra stack
#include <bits/stdc++.h>
using namespace std;
  
// Function to transfer elements of
// the stack s1 to the stack s2
void transfer(stack<int>& s1,
              stack<int>& s2, int n)
{
    for (int i = 0; i < n; i++) {
  
        // Store the top element
        // in a temporary variable
        int temp = s1.top();
  
        // Pop out of the stack
        s1.pop();
  
        // Push it into s2
        s2.push(temp);
    }
}
  
// Function to reverse a stack using another stack
void reverse_stack_by_using_extra_stack(stack<int>& s,
                                        int n)
{
    stack<int> s2;
  
    for (int i = 0; i < n; i++) {
  
        // Store the top element
        // of the given stack
        int x = s.top();
  
        // Pop that element
        // out of the stack
        s.pop();
  
        transfer(s, s2, n - i - 1);
        s.push(x);
        transfer(s2, s, n - i - 1);
    }
}
  
// Driver Code
int main()
{
    int n = 5;
  
    stack<int> s;
    s.push(1);
    s.push(2);
    s.push(3);
    s.push(4);
    s.push(5);
  
    reverse_stack_by_using_extra_stack(s, n);
  
    for (int i = 0; i < n; i++) {
        cout << s.top() << " ";
        s.pop();
    }
    return 0;
}
Output:
1 2 3 4 5

Time Complexity: O(N2)
Auxiliary Space: O(N)

My Personal Notes arrow_drop_up
Recommended Articles
Page :