美文网首页工作生活
9.两个栈实现队列

9.两个栈实现队列

作者: HamletSunS | 来源:发表于2019-06-30 18:04 被阅读0次

    思路:

    • 栈是先进后出的数据结构,把1个栈A的内容出栈后放入另1个栈B的话,栈B的出栈顺序从逻辑上看就是栈A的入栈顺序,变成了先进先出
    • 设计两个操作:入队、出队
    • 入队:放入栈A
    • 出队:先判栈B是否为空,不为空直接出栈;为空的话把栈A元素全部导入到栈B中,再执行出栈操作
    class Solution
    {
    public:
        void push(int node) {
           stack2.push(node);
        }
    
        int pop() {
            if(stack1.size()!=0){
                int ret=stack1.top();
                stack1.pop();
                return ret;
            }
            else if(stack1.size()==0 && stack2.size()!=0){
                while(!stack2.empty()){
                    stack1.push(stack2.top());
                    stack2.pop();
                }
                int ret=stack1.top();
                stack1.pop();
                return ret;
            }
            else
                return -1;
        }
    
    private:
        stack<int> stack1;
        stack<int> stack2;
    };
    

    相关文章

      网友评论

        本文标题:9.两个栈实现队列

        本文链接:https://www.haomeiwen.com/subject/tyibcctx.html