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();
}
}
}
浙公网安备 33010602011771号