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

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

     思路:栈为先进后出,队列为先进先出。大致思想是,先将元素放入栈1中,然后将栈1的元素,全部放入栈2中。值得注意的是,当栈2中有元素时,应先出栈,然后才能将栈1的元素放入栈2中;若还想将元素放入栈1,从而再放入栈2中,应该等等栈1中的元素为空了,才能放,不然会影响顺序。

     1 class Solution
     2 {
     3 public:
     4     void push(int node) 
     5     {
     6         stack1.push(node);    //代码区
     7     }
     8 
     9     int pop() 
    10     {
    11         if(stack2.empty())      //代码区
    12         {
    13             while(!stack1.empty())
    14             {
    15                 stack2.push(stack1.top());
    16                 stack1.pop();
    17             }
    18         }    
    19         int res=stack2.top();
    20         stack2.pop();
    21         return res;        //
    22     }
    23 
    24 private:
    25     stack<int> stack1;
    26     stack<int> stack2;
    27 };

    扩展:用两个队列实现一个栈

    下面结合“abc”的入栈和出栈进行说明:

    1、先将“abc”压入队列1,如图:

    2、将"ab“压入队列2,如图:

    3、"c“出栈,这就相当于出栈了,然后将a,压入队列1,队列2中b出队列,相当于b出栈,最后a出队列。

     总结,即将队列中的前n-1个放入另一个队列中,剩下的一个出队列,重复上述过程,即可。

  • 相关阅读:
    二维动规思想,j 具有明显枚举特征
    二分法题目总结
    最大(小)值最小(大)化 (二分法变形)
    C/ C++ 输入输出流
    正序扫描字符串问题
    React(基础一)_react中的三大属性
    找位置
    STL vector
    STL stack
    打印日期
  • 原文地址:https://www.cnblogs.com/love-yh/p/7357274.html
Copyright © 2011-2022 走看看