7.两个栈实现一个队列

来源:互联网 发布:淘宝知识产权怎么处罚 编辑:程序博客网 时间:2024/06/05 23:44
#include <iostream>#include <queue>#include <stack>using namespace std;template <typename T> class CQueue{public:    CQueue(){}    ~CQueue(){}    void push(const T& val);    const T& pop();private:    stack<T> stack1;    stack<T> stack2;};template <typename T> void CQueue<T>::push(const T& val){    stack1.push(val);}template <typename T> const T& CQueue<T>::pop(){    T val;    if(stack2.empty())    {        while(!stack1.empty())        {            stack2.push(stack1.top());            stack1.pop();        }    }    if(!stack2.empty())    {        val = stack2.top();        stack2.pop();    }    else    {        val = -1;    }    return val;}int main(){    int a[] = {1, 2, 3, 4, 5};    CQueue<int> myque;    for(int& val: a)    {        myque.push(val);    }    for(unsigned i=0; i<sizeof(a)/sizeof(a[0]); i++)    {        cout<<myque.pop()<<" ";    }    return 0;}
1 0
原创粉丝点击