您的位置:首页 > 其它

微软100题(66)用递归颠倒栈

2015-06-03 12:10 423 查看
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。
颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。

思路:栈为空就终止,否则出栈,递归处理,然后进栈,这里需要用两个递归,一个用于出来,一个用于进栈底

void AddToBottom(stack<int> &data,int element)
{
	if(data.empty())
		data.push(element);
	else
	{
		int top = data.top();
		data.pop();
		AddToBottom(data,element);
		data.push(top);
	}
}
void ReverseStackRecursion(stack<int> &data)
{
	if(data.size()==1) return;
	int element = data.top();
	data.pop();
	ReverseStackRecursion(data);
	AddToBottom(data,element);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: