剑指offer-->面试题7 用两个栈实现队列
2013-02-19 15:54
639 查看
下面是Queue.h
#pragma once #include <stack> #include <exception> 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> CQueue<T>::CQueue(void) { } template <typename T> CQueue<T>::~CQueue(void) { } template <typename T> void CQueue<T>::appendTail(const T& node) { stack1.push(node); } 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; }
下面是测试文件
#include <stdio.h> #include "Queue.h" void Test(char actual, char expected) { if(actual == expected) { printf("Test passed.\n"); }else{ printf("Test failed.\n"); } } int main() { CQueue<char> queue; queue.appendTail('a'); queue.appendTail('b'); queue.appendTail('c'); char head = queue.deleteHead(); Test(head, 'a'); head = queue.deleteHead(); Test(head, 'b'); queue.appendTail('d'); head = queue.deleteHead(); Test(head, 'c'); head = queue.deleteHead(); Test(head, 'd'); return 0; }
下面是运行结果:
相关文章推荐
- 剑指offer面试题7:用两个栈实现队列&用两个队列实现栈
- <剑指offer 面试题9>用两个栈实现队列(Java)
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer面试题7用两个栈实现队列(附带用两个队列实现栈)
- 【练习笔记】剑指offer-面试题7 :用两个栈实现队列
- 剑指Offer之面试题7:用两个栈实现队列
- 剑指offer面试题7——用两个栈实现队列
- 剑指offer--面试题7: 用两个栈实现队列
- 剑指Offer面试题7:用两个栈实现队列 Java实现
- 剑指offer——面试题7:用两个栈实现队列
- 剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作
- [剑指offer][面试题07-扩展]用两个队列实现栈
- [剑指offer]面试题7:用两个栈实现队列
- 剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈
- [剑指offer][面试题07]用两个栈实现队列
- 剑指offer_面试题7_用两个栈实现队列(让我熟悉了类模板的使用)
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指offer之面试题7:用两个栈实现队列
- 剑指offer--面试题7:用两个栈实现队列--Java实现
- 剑指offer--面试题9:用两个栈实现队列