【剑指offer】面试题7:用两个栈实现队列
2017-03-04 11:26
295 查看
//用两个栈实现一个队列,实现它的两个函appendTail和deleteHead,分别在队列尾部插入结点和在队列头部删除结点的功能 //思路:1.栈遵照先入先出的规则,当出队时,应当弹出第一个入栈的元素,但并不在栈顶,因此不能直接删除 //2.所以借助栈2,把栈1的元素弹出压入栈2,就实现了逆置,出队时,弹出栈2的值。(此时栈2的栈顶元素就是我们要弹出的元素)我们就很容易解决这个问题了 template<typename T>class CQueue { public: CQueue(void); ~CQueue(); void appendTail(const T& node); T deleteHead(); private: stack<T>stack1; stack<T>stack2; }; template<typename T> void CQueue<T>::appendTail(const T&node) { stack.push(node); } template<typename T>T CQueue<T>::deleteHead() { //把栈1元素全部弹出,压入栈2 if (stack2.size() <= 0) { while (stack1.size() > 0) { T& data = stack1.top(); stack1.pop(); stack2.push(data); } } if (stack2.size() == 0) { throw std:; exception("Invalid input."); } T head=stack2.top(); stack2.pop(); return head; }
相关文章推荐
- <剑指offer 面试题9>用两个栈实现队列(Java)
- 剑指offer--面试题9:用两个栈实现队列
- 【剑指offer】面试题7:两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 【面试题】剑指Offer-7-两个栈实现一个队列
- 剑指offer面试题7——用两个栈实现队列
- 【练习笔记】剑指offer-面试题7 :用两个栈实现队列
- 【剑指offer】面试题 9:用两个栈实现队列
- 剑指offer——面试题7:用两个栈实现队列
- 剑指Offer面试题7[用两个栈实现队列]
- 剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作
- [剑指offer]面试题7:用两个栈实现队列
- 剑指Offer----面试题七:用两个栈实现队列
- 剑指offer之面试题7用两个栈实现一个队列
- 剑指offer编程题Java实现——面试题7用两个栈实现队列
- 剑指offer面试题7:用两个栈实现队列
- 【剑指offer】2.3.5栈和队列——面试题7:用两个栈实现队列
- 剑指offer面试题7:用两个栈实现队列
- [剑指offer][面试题07-扩展]用两个队列实现栈
- 【剑指Offer面试题】 九度OJ1512:用两个栈实现队列