用两个栈达成队列
发布时间:2021-11-20 13:31:01 所属栏目:PHP教程 来源:互联网
导读:用两个栈实现一个队列,队列声明如下,实现它的两个函数appendTail和deleteHead,分别完成在队尾插入结点和在队列头部删除结点的功能 template typename T class CQueue { public: CQueue(); ~CQueue(); void appendTail(const T nods); T deleteHead(); priv
|
用两个栈实现一个队列,队列声明如下,实现它的两个函数appendTail和deleteHead,分别完成在队尾插入结点和在队列头部删除结点的功能 template <typename T> class CQueue { public: CQueue(); ~CQueue(); void appendTail(const T& nods); T deleteHead(); private: stack<T> stack1; stack<T> stack2; }; #include <iostream> #include <stack> #include <exception> using namespace std; template <typename T> class CQueue { public: CQueue(){}; ~CQueue(){}; void appendTail(const T& nods); T deleteHead(); private: stack<T> stack1; stack<T> stack2; }; template <typename T> void CQueue<T>::appendTail(const T& nods) { stack1.push(nods); } template <typename T> T CQueue<T>::deleteHead() { if (stack2.size() == 0) { if (stack1.size() > 0) { while (stack1.size() > 0) { T& data = stack1.top(); stack1.pop(); stack2.push(data); } T& ret = stack2.top(); stack2.pop(); return ret; } else throw new exception(); } else { T ret = stack2.top(); stack2.pop(); return ret; } } int main() { CQueue<int> myDeque; myDeque.appendTail(1); myDeque.appendTail(2); myDeque.appendTail(3); try{ cout << myDeque.deleteHead() << endl; cout << myDeque.deleteHead() << endl; } catch(exception ex) { cout << "has exception" << endl; } return 0; } ![]() (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |




浙公网安备 33038102330468号