两个队列模拟栈

来源:互联网 发布:戴比尔斯 档次 知乎 编辑:程序博客网 时间:2024/04/30 02:42
#include<queue>#include<iostream>using namespace std;template<typename T>class CStack{public:CStack(){};~CStack(){};void append(const T& node);T deleteHead();private:queue<T> queue1,queue2;};template<typename T>void CStack<T>::append(const T& node){queue1.push(node);}template<typename T>T CStack<T>::deleteHead(){T node,node1;while(queue1.size()>1){node=queue1.front();queue1.pop();queue2.push(node);}if(queue1.size()!=1) throw "empty";node1=queue1.front();queue1.pop();while(!queue2.empty()){node=queue2.front();queue2.pop();queue1.push(node);}return node1;}int main(){CStack<int> cs;cs.append(3);cs.append(4);try{cout<<cs.deleteHead()<<endl;cout<<cs.deleteHead()<<endl;cout<<cs.deleteHead()<<endl;}catch(const char* str){cout<<str<<endl;}return 0;}

0 0