用栈实现队列--20150924

来源:互联网 发布:福州淘宝美工培训 编辑:程序博客网 时间:2024/05/21 22:32
//题目描述:用栈来实现队列操作,要求在队尾插入在队头删除//思路:用两个栈stack1和stack2,元素全部在stack1进栈,//删除元素时,先从stack1中依次出栈到stack2,再从stack2中出栈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::appendTail(const T& node){    stack1.push(node);}template<typename T> T CQueue::deleteHead(){    //如果stack2不为空时,说明上次入栈的元素还没有全部出栈,则stack1中的元素不执行进入stack2的操作。反之则执行。    if(stack2.size()<=0){        while(stack1.size()>0){            T& data = stack1.top();            stack1.pop();            stack2.push(data);        }    }    if(stack2.size()==0){        throw new exception("栈已空,无元素可删");    }    T head = stack2.top();    stack2.pop();    return head;}
0 0
原创粉丝点击