【剑指Offer】面试题7:用两个栈实现队列

来源:互联网 发布:c语言中调用文本文件 编辑:程序博客网 时间:2024/06/06 20:06

一:题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。


二:解题思路

队列:先进先出

栈:先进后出

如果将栈1的元素依次push到栈2中,则栈2的出栈顺序与队列的出队顺序是相同的

所以:

利用栈1保存队列的入队操作

利用栈2的出栈实现队列的出队操作


三:代码实现

class Solution{public:    void push(int node) {        stack1.push(node);    }    int pop() {                int popNum;        int numStack1Top;                //如果栈2为空        if(stack2.empty()){            //将栈1的元素依次入栈2,栈顶元素即要出队的元素            while(stack1.size()>0){                numStack1Top=stack1.top();                stack1.pop();                stack2.push(numStack1Top);            }        }                if(stack2.size()==0){        isException=true;            return INT_MIN;//队列为空,不能进行出队操作        }                    //如果栈2不为空,直接弹出栈2的栈顶元素        popNum=stack2.top();        stack2.pop();        return popNum;            }private:    stack<int> stack1;    stack<int> stack2;    bool isException=false;};

原创粉丝点击