剑指offer面试题7:用两个栈实现队列

用两个栈实现队列。队列的两个函数分别实现队列尾部插入结点和在队列头部删除结点的功能。

#include<iostream>
#include<stack>
using namespace std;
template <typename T> class CQueue
{
public:
	CQueue(void);
	~CQueue(void);
	void appendTail(const T& node);
	T deleteHead();
private:
	stack<T> stack1;
	stack<T> stack2;
};
template <typename T> void CQueue<T>::appendTail(const T& element)
{
	stack1.push(element);
}
template <typename T> T CQueue<T>::deleteHead()
{
	if(stack2.size()<=0)
	{
		while(stack1.size()>0)
		{
			T &data=stack1.top();
			stack1.pop();
			stack2.push(data);
		}
	}
	if(stack2.size()==0)
	{
		throw new exception("queue is empty");
	}
	T head=stack2.top();
	stack2.pop();
	return head;
}

 

 

posted @ 2012-11-12 22:19  代码改变未来  阅读(241)  评论(0编辑  收藏  举报