剑指offer-面试题9-用两个栈实现队列-栈和队列

Posted buaazhhx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer-面试题9-用两个栈实现队列-栈和队列相关的知识,希望对你有一定的参考价值。

/*
题目:
	用两个栈实现一个队列。队列声明如下。
*/
/*
思路:
	将值压入stack1,再从stack1弹出到stack2,则为先进先出。
	appendTail时直接压入stack1即可,当stack2没有可用于deleteHead的元素时,将stack1的元素全部压入stack2。
*/
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(stack1.empty() && stack2.empty()) throw new exceptions("queue is empty");
	
	if(stack2.size() == 0){
		while(!stack1.empty){
			T& data = stack1.top();
			stack2.push(data);//可以用stack2.push(stack1.pop())吗?
			stack1.pop();
		}
	}
	T head = stack2.top();
	stack2.pop();
		

   

以上是关于剑指offer-面试题9-用两个栈实现队列-栈和队列的主要内容,如果未能解决你的问题,请参考以下文章

校招面试 之 剑指offer第9-1题 用两个栈实现一个队列

校招面试 之 剑指offer第9-2题 用两个队列实现一个栈

《剑指Offer》附加题_用两个队列实现一个栈_C++版

剑指Offer数据结构之栈和队列[Python版]

剑指Offer数据结构之栈和队列[Python版]

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