两个队列模拟栈
2014-04-11 11:36
148 查看
#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; }
相关文章推荐