用两个栈实现队列

来源:互联网 发布:试验数据库 编辑:程序博客网 时间:2024/06/05 23:55

用两个栈实现一个队列,队列声明如下,实现它的两个函数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;}elsethrow 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;}



0 0
原创粉丝点击