剑指offer第7题 两个栈实现队列

来源:互联网 发布:百度大数据 编辑:程序博客网 时间:2024/06/05 21:51

 

//两个栈实现队列#include <iostream>#include <stack>#include <cstdio>using namespace std;template <typename T> class myQueue{public:myQueue(void){}~myQueue(void){}void appendTail(const T& node);T deleteHead();int size() const;private:stack<T> stack1;stack<T> stack2;};template <typename T> void myQueue<T>::appendTail(const T& node){stack1.push(node);}template <typename T> T myQueue<T>::deleteHead(){if(stack2.empty()){while(!stack1.empty()){T node = stack1.top();stack1.pop();stack2.push(node);}}if(stack2.empty())throw std::exception("queue is empty");T node = stack2.top();stack2.pop();return node;}template <typename T> int myQueue<T>::size() const{return stack1.size()+stack2.size();}int main(){myQueue<int> que;que.appendTail(5);que.appendTail(4);que.appendTail(3);que.appendTail(10);while(que.size()!=0){cout<<que.deleteHead()<<" ";}cout<<endl;return 0;}


 

原创粉丝点击