#include <stack>
int getAndRemoveLastElement(std::stack<int> &stk);
void reverse(std::stack<int> &st);
int main()
{
std::stack<int> stk;
int arr[5] = { 12, 15, 5, 9, 7 };
for (int i = 0; i < 5; ++i)
{
stk.push(arr[i]);
}
reverse(stk);
while (!stk.empty())
{
std::cout << stk.top() << std::endl;
stk.pop();
}
system("pause");
return 0;
}
int getAndRemoveLastElement(std::stack<int> &stk)
{
int result = stk.top();
stk.pop();
if (stk.empty())
return result;
else
{
int last = getAndRemoveLastElement(stk);
stk.push(result);
return last;
}
}
void reverse(std::stack<int> &stk)
{
if (stk.empty())
return;
int i = getAndRemoveLastElement(stk);
reverse(stk);
stk.push(i);
}