您的位置:首页 > 其它

如何仅用递归函数和栈操作逆序一个栈

2016-08-22 21:40 232 查看
如何仅用递归函数和栈操作逆序一个栈【题目】

一个栈依次压入 1、2、3、4、5,那么从栈顶到栈底分别为 5、4、3、2、1。将这个栈转置后,从栈顶到栈底为 1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。

#include<string>
#include<iostream>
#include<stack>
using namespace std;
int getAndRemoveLast(stack<int> &stack) {//得到当前栈的栈底元素
int result = stack.top();
stack.pop();
if (stack.empty()) {
return result;
}
else {
int last = getAndRemoveLast(stack);
stack.push(result);
return last;
}
}
void reverse(stack<int> &stack) {//反转栈的函数
if (stack.empty()) {
return;
}
int i = getAndRemoveLast(stack);//得到当前栈的栈底元素
reverse(stack);//递归调用
stack.push(i);
}
int main()
{
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
reverse(s);
while (s.size()!=0)
{
cout << s.top() << endl;
s.pop();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: