昨天刚好碰到这道题,于是写了代码实现之。
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> s,ss,sss;//s为原栈,ss为输出栈,sss为暂存栈
int num;
while(cin>>num)
{
s.push(num);
}
ss.push(s.top());
s.pop();
while(!s.empty())
{
if(s.top()<ss.top())
{
sss.push(ss.top());
ss.pop();
if(!ss.empty())
{
while(ss.top()>s.top())
{
sss.push(ss.top());
ss.pop();
if(ss.empty())
break;
}
}
ss.push(s.top());
while(!sss.empty())
{
ss.push(sss.top());
sss.pop();
}
}
else
{
ss.push(s.top());
}
s.pop();
}
while(!ss.empty())
{
cout<<ss.top()<<" ";
ss.pop();
}
return 0;
}
