比如:原来栈中从顶到底的元素分别为1, 2, 3, 4, 5。.翻转后栈中从顶到底应分别为5, 4, 3, 2, 1。
#include <stack>
using namespace std;
void addToStack(stack<int> &buf, int value)
{
if (buf.empty())
{
buf.push(value);
}
else
{
int top = buf.top();
buf.pop();
addToStack(buf, value);
buf.push(top);
}
}
void reverse(stack<int> &buf)
{
if (!buf.empty())
{
int top = buf.top();
buf.pop();
reverse(buf);
addToStack(buf, top);
}
}