Open In App

How to Reverse a Stack in C++?

Last Updated : 22 Mar, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

In C++, stacks are containers that store the elements in the last in-first out order(LIFO). In, this article, we will learn how we can reverse a stack in C++.

Example

Input:
stack<int> S ={5,4,3,2,1}
store
Output:
// Reversed Stack
stack<int> S ={1,2,3,4,5}

Reverse a Stack in C++

We can reverse a stack in C++ using anther set or any other sequential data container. We just have to reverse the order of the elements present in the stack. The below approach shows how to reverse stack using another stack.

Approach

  1. Declare a temporary stack named tempStack.
  2. Till the current stack is empty. Do the following:
    1. Push the top of currentStack to tempStack.
    2. Pop the top of the currentStack.
  3. The order of the elements will be reversed in the tempStack
  4. Assign the tempStack to currentStack.

C++ Program to Reverse a Stack

The following program illustrates how we can reverse a stack in C++:

C++
// C++ Program to illustrate how we can reverse a stack
#include <iostream>
#include <stack>
using namespace std;

// utility function to print stack
void printStack(stack<int> st)
{
    while (!st.empty()) {
        cout << st.top() << " ";
        st.pop();
    }
    cout << endl;
}

int main()
{
    // Initialize a stack
    stack<int> currentStack;

    // Push some elements into the stack
    currentStack.push(1);
    currentStack.push(2);
    currentStack.push(3);
    currentStack.push(4);
    currentStack.push(5);

    // Print the original stack
    cout << "Original stack: ";
    printStack(currentStack);

    // Reverse the stack
    stack<int> tempStack;
    while (!currentStack.empty()) {
        tempStack.push(currentStack.top());
        currentStack.pop();
    }
    currentStack = tempStack;

    // Print the reversed stack
    cout << "Reversed stack: ";
    printStack(currentStack);

    return 0;
}

Output
Original stack: 5 4 3 2 1 
Reversed stack: 1 2 3 4 5 

Time Complexity: O(N) where N is the size of the stack.
Auxiliary Space: O(N)




Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads