diff --git a/data structures/stack/cpp/Reverse a Stack.cpp b/data structures/stack/cpp/Reverse a Stack.cpp new file mode 100644 index 000000000..0b9800359 --- /dev/null +++ b/data structures/stack/cpp/Reverse a Stack.cpp @@ -0,0 +1,40 @@ +#include +#include +using namespace std; + +void reverseStack(stack &input, stack &extra) { + + int x=input.top(); + if(input.size()==0||input.size()==1){ + return; + } + input.pop(); + reverseStack(input,extra); + while(!input.empty()){ + extra.push(input.top()); + input.pop(); + } + input.push(x); + while(!extra.empty()){ + input.push(extra.top()); + extra.pop(); + } +} + +int main() { + stack input, extra; + int size; + cin >> size; + + for (int i = 0, val; i < size; i++) { + cin >> val; + input.push(val); + } + + reverseStack(input, extra); + + while (!input.empty()) { + cout << input.top() << " "; + input.pop(); + } +}