用两个栈实现队列(C++模板)

来源:互联网 发布:淘宝商品拍照技巧 编辑:程序博客网 时间:2024/06/06 13:17

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。

思想很简单,直接上代码:

#include<iostream>#include<stack>#include<exception>using namespace std;template<typename T> class Cqueue{public:    Cqueue();    ~Cqueue();    void appendTail(const T& element);    T deleteHead();private:    stack<T> stack1;    stack<T> stack2;};template<typename T> Cqueue<T>::Cqueue(){}template<typename T> Cqueue<T>::~Cqueue(){}template<typename T> void Cqueue<T>::appendTail(const T& element){    stack1.push(element);}template<typename T> T Cqueue<T>::deleteHead(){    if(stack2.size()<=0)    {        while(stack1.size()>0)        {            T& data=stack1.top();            stack1.pop();            stack2.push(data);        }    }    if(stack2.size()==0)    {        throw new exception("queue is empty");    }    T head=stack2.top();    stack2.pop();    return head;}int main(){    Cqueue<int> queue;    queue.appendTail(1);    queue.appendTail(2);    queue.appendTail(3);    queue.appendTail(8);    int Head=queue.deleteHead();    cout<<Head<<endl;    Head=queue.deleteHead();    cout<<Head<<endl;    Head=queue.deleteHead();    cout<<Head<<endl;    Head=queue.deleteHead();    cout<<Head<<endl;    queue.appendTail(9);    Head=queue.deleteHead();    cout<<Head<<endl;    system("pause");    return 0;}

这里写图片描述