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();
}
}
}



posted @ 2011-10-24 13:48  Sw_R  阅读(312)  评论(0编辑  收藏  举报