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

    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
     
    解题思路:因为栈和队列是一个相反的操作,所以两次相反就是相同的操作,举个例子:
    栈s1 push4个元素:1 2 3 4;如果一次出栈是 :4 3 2 1
    队列s2 push4个元素:1 2 3 4;如果依次出队列是:1 2 3 4
    这个时候如果将栈s1pop的元素再入栈再出栈呢?
    假设将栈s1pop的元素push到栈s2就是: 4 3 2 1
    如果栈s2再pop就是:1 2 3 4
    注意:如果出一个s1的变化和s2的变化
    手工模拟步骤如下图所示:
     

    代码如下:

    class Solution
    {
    public:
        void push(int node) {
        s1.push(node);
            
        }
    
        int pop() {
        while(!s1.empty()){
         s2.push(s1.top());
         s1.pop();   
        }int temp=s2.top();
        s2.pop();
        while(!s2.empty()){
            s1.push(s2.top());
            s2.pop();
        }    
        return temp;    
        }
    
    private:
        stack<int> s1;
        stack<int> s2;
    };
    不一样的烟火
  • 相关阅读:
    P1182 数列分段Section II
    P1119 灾后重建
    P1133 教主的花园
    P1077 摆花
    P2002 消息扩散
    P2341 [HAOI2006]受欢迎的牛(tarjan+缩点)
    luoguP1726 上白泽慧音
    P1053 篝火晚会
    P2296 寻找道路
    P1156 垃圾陷阱
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11232809.html
Copyright © 2011-2022 走看看