博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

程序员面试100题之三十九,颠倒栈

Posted on 2010-09-24 19:40  KurtWang  阅读(440)  评论(0编辑  收藏  举报
#include "stdafx.h"
#include <stack>

void bottom(std::stack<int>& s, int t)
{
	if(s.empty())
		s.push(t);
	else
	{
		int temp = s.top();
		s.pop();
		bottom(s,t);
		s.push(temp);
	}
}

void reverse(std::stack<int>& s)
{
	if(s.empty())
		return;
	else
	{
		int t = s.top();
		s.pop();
		reverse(s);
		bottom(s,t);
	}
}



int _tmain(int argc, _TCHAR* argv[])
{
	std::stack<int> s;
	s.push(1);
	s.push(2);
	s.push(3);
	reverse(s);

	while(!s.empty())
	{
		printf("%d ", s.top());
		s.pop();
	}

	return 0;
}