题目描述:
一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但只能用递归函数来实现,不能用其他数据结构。
#include<stack>
#include<iostream>
using namespace std;
class ReverseStack {
public:
static void Do(stack<int>& s) {
if (s.empty()) {
return;
}
int last = pop_back(s);
Do(s);
cout << last << " ";
s.push(last);
}
private:
static int pop_back(stack<int>& s) {
int ele = s.top();
s.pop();
if (s.empty()) {
return ele;
}
int last = pop_back(s);
s.push(ele);
return last;
}
};
int main() {
stack<int> s({ 1,2,3,4,5 });
ReverseStack::Do(s);
cout << endl;
return 0;
}