剑指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题 用两个栈实现一个队列