c++ 类模板 用栈实现队列

来源:互联网 发布:淘宝比较靠谱的韩代 编辑:程序博客网 时间:2024/06/11 08:02

c++语言可以利用STL库中定义的栈类实现队列的操作。

包括入队列、出队列操作。

下面就是用两个栈实现队列的上述操作。其中涉及到类模板的知识,不清楚的可以去其它地方进行查询。

#include <iostream>#include <stack>using namespace std;template<typename T> class CQueue{public:    //CQueue(void);    //~CQueue(void);    void appendTail(const T& node);    T deleteHead();private:    stack<T> stack1;    stack<T> stack2;};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)        {            stack2.push(stack1.top());            stack1.pop();        }    }    if(stack2.size()==0)    {        cout << "Queue is empty" << endl;    }    T head=stack2.top();    stack2.pop();    return head;}void Test(char actual, char expected){    if(actual==expected)    {        cout << "Test Passed" << endl;    }    else    {        cout << "Test Failed" << endl;    }}int main(){    CQueue<char> My_queue;    My_queue.appendTail('a');    My_queue.appendTail('b');    My_queue.appendTail('c');    char head = My_queue.deleteHead();    Test(head,'a');    head = My_queue.deleteHead();    Test(head,'b');    My_queue.appendTail('d');    head = My_queue.deleteHead();    Test(head,'c');    My_queue.appendTail('e');    head = My_queue.deleteHead();    Test(head,'d');    head = My_queue.deleteHead();    Test(head,'e');        return 0;}