思路:类似于插入排序,每次遇到一个更小的就将前面的都弹出将其插入到正确的位置,再将弹出的再压回来。
#include <iostream>
#include <stack>
using namespace std;
int main(){
int n, temp;
stack<int> s1,s2;
cin>>n;
while(n--){
cin>>temp;
s1.push(temp);
}
while(!s1.empty()){
if(s2.empty()){
s2.push(s1.top());
s1.pop();
}
else{
temp=s1.top();
s1.pop();
while(!s2.empty()&&s2.top()>temp){
s1.push(s2.top());
s2.pop();
}
s2.push(temp);
}
}
while(!s2.empty()){
cout<<s2.top()<<" ";
s2.pop();
}
}