用两个队列实现栈

来源:互联网 发布:医院感染管理三级网络 编辑:程序博客网 时间:2024/06/01 17:25
#include <queue>template <typename T>class CStack{public:void AddToTail(const T&);T deleteHead();private:std::queue<T> queue1;std::queue<T> queue2;};template <typename T>void CStack<T>::AddToTail(const T& value){queue1.push(value);}template <typename T>T CStack<T>::deleteHead(){int flat = 0;if (!queue1.empty()){while (queue1.size() > 1){T& data = queue1.back();queue2.push(data);queue1.pop();}flat = 1;}else{while (queue2.size() > 1){T& data = queue2.back();queue1.push(data);queue2.pop();}flat = 2;}T result;if (flat == 1){result = queue1.back();queue1.pop();}else if (flat == 2){result = queue2.back();queue2.pop();}else{throw new exception("stack is empty");}return result;}

0 0
原创粉丝点击