zoukankan      html  css  js  c++  java
  • [剑指offer] 用两个栈实现队列

    题目描述

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

    思路写在注释中了

    我的代码:

    class Solution
    {
    // 实际队列为stack2反序+stack1正序
    public:
        void push(int node) {
            stack1.push(node);    // 新元素压入stack1的结尾
        }
    
        int pop() {
            int re;
            if (!stack2.empty()) {
                // 若stack2不为空,则stack2的结尾为实际队列的开头
                re = stack2.top(); 
                stack2.pop(); 
                return re;
            }
            // 若stack2为空,实际队列为stack1反序,这时将stack1逐个pop后压入stack2即可得到实际队列的反序,这时stack2 pop的为实际队列的开端
            while (!stack1.empty()) {
                int tmp = stack1.top();
                stack1.pop();
                stack2.push(tmp);
            }
            re = stack2.top();
            stack2.pop();
            return re;
        }
    
    private:
        stack<int> stack1;    // 后半部分正序
        stack<int> stack2;    // 开始部分反序
    };
  • 相关阅读:
    JNI和NDK的关系
    JNI和NDK的关系
    Android SDK结构分析
    设计模式:单例模式
    编程规范:占位符
    设计模式:工厂模式
    代码整洁之道----读书笔记
    个人编程规范
    装饰器函数
    异常处理
  • 原文地址:https://www.cnblogs.com/zmj97/p/7895584.html
Copyright © 2011-2022 走看看