• 用两个栈实现队列


    题:用两个栈来实现一个队列,完成队列的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个放入另一个队列中,剩下的一个出队列,重复上述过程,即可。

  • 相关阅读:
    android apk 反编译
    js 读 xml 非ie 可以支持 chrome 浏览器 与 android webView
    php+mySQl 环境搭建
    Activity 生命周期
    div 隐藏 显示 占空间 不占空间
    android 异步加载
    android 文件操作
    透明 GridView 背景透明
    eclipse 版本理解
    WebKit 上的JS直接使用Java Bean
  • 原文地址:https://www.cnblogs.com/love-yh/p/7357274.html
Copyright © 2020-2023  润新知