Stack 的一些
1. reverse a stack with recursion
void reverse_push(stack<int> &stk, int x) { if(stk.empty()) { stk.push(x); return; } int temp = stk.top(); stk.pop(); reverse_push(stk, x); stk.push (temp); } void reverse(stack<int>& stk) { if(stk.empty()) { cout<<"aaa"<<endl; return; } int temp = stk.top(); stk.pop(); cout<<temp<<endl; reverse(stk); reverse_push(stk, temp); }
2. 两个栈,调转第一个栈元素的顺序。
void reverse_stack(stack<int> &st1)
{
stack<int> st2;
int temp;
int size = st1.size();
while(size--)
{
temp = st1.top();
st1.pop();
int n = size;
while(n--)
{
st2.push(st1.top());
st1.pop();
}
st1.push(temp);
while(!st2.empty())
{
st1.push(st2.top());
st2.pop();
}
}
}