栈转置:一个栈依次压入0,1,2,3,4,5,从栈顶到栈底分别为5,4,3,2,1,0。将这个栈转置后,从栈顶到栈底依次为0,1,2,3,4,5,也就是实现栈中元素的逆序,只能用递归函数来实现,而不能用其他的数据结构。
#include<iostream>
#include<stack>;
using namespace std;
//将栈顶元素移动至栈底
void move_top_to_bottom(std::stack<int>& s,int t)
{
if (s.empty())
{
s.push(t);
}
else
{
int top = s.top();
s.pop();
move_top_to_bottom(s, t); //递归处理
s.push(top);
}
}
//颠倒整个栈
void reverse_stack(std::stack<int>& s){
if (s.empty()) return;
int top = s.top();
s.pop();
reverse_stack(s); //递归处理子栈
move_top_to_bottom(s,top);
}
int main()
{
stack<int> dest;
for (int i = 0; i < 6; ++i)
{
dest.push(i);
}
reverse_stack(dest); //调用栈反转
while (!dest.empty())
{
cout << dest.top() << " ";
dest.pop();
}
cout << endl;
system("pause");
return 0;
}