剑指offer--面试题9:用两个栈实现队列
来源:互联网 发布:手机用usb使用电脑网络 编辑:程序博客网 时间:2024/06/06 01:34
#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> 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){if (stack1.size() <= 0) throw new exception("queue is empty");while (stack1.size() > 0){stack2.push(stack1.top());stack1.pop();}}T temp = stack2.top();stack2.pop();return temp;}int main(){CQueue<char> queue; queue.appendTail('a'); queue.appendTail('b'); queue.appendTail('c'); cout << queue.deleteHead() << endl; cout << queue.deleteHead() << endl; queue.appendTail('d'); cout << queue.deleteHead() << endl; queue.appendTail('e'); cout << queue.deleteHead() << endl; cout << queue.deleteHead() << endl; return 0;}
#include <iostream> #include <queue> using namespace std; queue<char> q1;queue<char> q2;void appendTail(const char data) { if (q1.size()==0 && q2.size() ==0)//如果q1与q2都为空,那么往q1中插入元素 { q1.push(data); } else if (q1.size()>0)//如果q1不为空,那么往q1中插入元素 { q1.push(data); } else if(q2.size()>0)//如果q2不为空,那么往q1中插入元素 { q2.push(data); } } char deleteTail() { char temp; if (q2.size() == 0) { while(q1.size() != 1) { q2.push(q1.front()); q1.pop(); } temp = q1.front(); q1.pop(); } else { while(q2.size() != 1) { q1.push(q2.front()); q2.pop(); } temp = q2.front(); q2.pop(); } return temp; } int main() { appendTail('a'); appendTail('b'); appendTail('c'); cout << deleteTail() << endl; cout << deleteTail() << endl; appendTail('d'); cout << deleteTail() << endl; appendTail('e'); cout << deleteTail() << endl; cout << deleteTail() << endl; return 0; }
阅读全文
1 0
- 【剑指offer】面试题 9:用两个栈实现队列
- 剑指offer--面试题9:用两个栈实现队列
- 【剑指offer】面试题9:用两个栈实现队列
- 剑指offer-->面试题7 用两个栈实现队列
- [剑指offer][面试题07]用两个栈实现队列
- 《剑指Offer》面试题-用两个栈实现队列
- 《剑指offer》面试题七 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer:面试题7 用两个栈实现队列
- 《剑指Offer》面试题7:用两个栈实现队列
- 【剑指offer】 面试题7: 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 《剑指Offer》面试题:用两个队列实现一个栈
- 剑指offer-面试题7:用两个栈实现队列
- 剑指offer面试题之用两个栈实现队列
- 剑指offer面试题 用两个栈实现队列
- 剑指Offer----面试题七:用两个栈实现队列
- 剑指offer---面试题7 用两个栈实现队列
- CUDA之同步函数详解
- 栈(ADT)
- mysql数据库方言的选择问题
- macOS High Sierra公测版申请及下载安装
- 《算法概论》习题解答 8.10
- 剑指offer--面试题9:用两个栈实现队列
- 剑指offer | 训练题58:按之字形打印二叉树
- 磁珠还可以用来抑制纹波噪声?
- (转)投资很难赚到你不信的那份钱︱投资道
- 第八章课后题_1
- 2017暑假七林集训day16
- Scala练习-顺序查找
- 数据库的一些操作
- codevs 1214 线段覆盖 贪心 解题报告