双栈模拟队列

来源:互联网 发布:淘宝网男装毛衫 编辑:程序博客网 时间:2024/04/16 21:47
#include <iostream>#include <stack>using namespace std;template<class T>class CQueue{public:    T& push(T&);    T& front();    void pop();private:    stack<T*> m_stack1;    stack<T*> m_stack2;};template<class T>T& CQueue<T>:: push(T& t){    m_stack1.push(&t);}template<class T>T& CQueue<T>:: front(){    if (m_stack2.empty())    {        while (!m_stack1.empty())        {            m_stack2.push(m_stack1.top());            m_stack1.pop();        }    }    T* t = new T();    t = m_stack2.top();    return *t;}template<class T>void CQueue<T>:: pop(){    if (m_stack2.empty())    {        while (!m_stack1.empty())        {            m_stack2.push(m_stack1.top());            m_stack1.pop();        }    }    return m_stack2.pop();}int main(){    CQueue<int> CQ;    int a = 1, b = 2, c = 3;    CQ.push(a);    CQ.push(b);    CQ.push(c);    cout << CQ.front() << endl;    CQ.pop();    cout << CQ.front() << endl;    return 0;}

0 0
原创粉丝点击