zoukankan      html  css  js  c++  java
  • 用两个栈实现一个队列

    思路:

      假设存在两个栈stack1、stack2,可以这样认为:

        stack2中保存的为【队列的前部分元素】,可以认为 其栈顶值 = 队列头部值。

        stack1中的元素为【未经转换的队列后部分元素】,相当于buffer一样的存在,它其实就是队列中后部分元素逆序的结果。因此需要将其元素全部投入到stack2中,这样完成翻转过程。

    画图如下:

    |  <----      队列        ----> |
    |  <- 栈2 ->   |  <- 栈1 ->     |
    | 和队列顺序一致 |  和队列顺序相反  |
    
    class Solution
    {
    public:
        void push(int node) {
            stack1.push(node);
        }
    
        int pop() {
            if (stack2.size() == 0)
            {
                while ( !stack1.empty())
                {
                    stack2.push(stack1.top());
                    stack1.pop();
                }
            }
            int value = stack2.top();
            stack2.pop();
            return value;
        }
    
    private:
        stack<int> stack1;
        stack<int> stack2;
    };
    
  • 相关阅读:
    解析HTTP协议六种请求方法
    金蝶
    普元
    中间件
    [CTSC2008] 网络管理
    【Uva 10498】满意值
    【SPOJ839】最优标号
    bzoj2879 [Noi2012]美食节
    bzoj3144 [Hnoi2013]切糕
    bzoj3112 [Zjoi2013]防守战线
  • 原文地址:https://www.cnblogs.com/ccXgc/p/8978580.html
Copyright © 2011-2022 走看看