题解 | #用递归函数和栈逆序一个栈#
用递归函数和栈逆序一个栈
http://www.nowcoder.com/practice/1de82c89cc0e43e9aa6ee8243f4dbefd
#include<bits/stdc++.h>
using namespace std;
int popb(stack<int>&s)
{
int top = s.top();
s.pop();
if(s.empty())
{
return top;
}
int t = popb(s);
s.push(top);
return t;
}
void reverse(stack<int>&s)
{
if(s.empty())
{
return;
}
int t = popb(s);
reverse(s);
std::cout << t << " "; // 这个输出就很鸡肋了。
s.push(t);
return;
}
int main()
{
int n,x;
cin>>n;
stack<int>s;
while(n--)
{
cin >> x;
s.push(x);
}
reverse(s);
// while(!s.empty())
// {
// std::cout<< s.top() << " ";
// s.pop();
// }
return 0;
}
using namespace std;
int popb(stack<int>&s)
{
int top = s.top();
s.pop();
if(s.empty())
{
return top;
}
int t = popb(s);
s.push(top);
return t;
}
void reverse(stack<int>&s)
{
if(s.empty())
{
return;
}
int t = popb(s);
reverse(s);
std::cout << t << " "; // 这个输出就很鸡肋了。
s.push(t);
return;
}
int main()
{
int n,x;
cin>>n;
stack<int>s;
while(n--)
{
cin >> x;
s.push(x);
}
reverse(s);
// while(!s.empty())
// {
// std::cout<< s.top() << " ";
// s.pop();
// }
return 0;
}