题目:
一个栈依次压入1,2,3,4,5,那么栈顶到栈底依次是5,4,3,2,1。逆序后,栈顶到栈底依次是1,2,3,4,5。只能使用递归函数
思路
两个递归函数
1.getAndRemoveLastElement();
功能:将栈底元素删除并返回
2.reverseStack();
功能:获取栈底元素并删除,栈为空的时候再依次压入(好好理解递归的好处)
代码:
#include <stack>
using namespace std;
int getAndRemoveLastElement(stack<int>& s)
{
int r = s.top();
s.pop();
if( s.empty() )
return r;
int ret = getAndRemoveLastElement(s);
s.push(r);
return ret;
}
void reverseStack(stack<int>& s)
{
if( s.empty() )
return ;
int r = getAndRemoveLastElement(s);
reverseStack(s);
s.push(r);
}