zoukankan      html  css  js  c++  java
  • Java用两个堆实现队列先进先出--转载

    思路:入队列时用堆1压入所有元素,出队列时先把堆1的元素逐个取出放到堆2里,再从堆2里逐个弹出元素即可实现队列的先进先出.
    入队列 0 1 2 3 4, 堆1:4 3 2 1 0, 堆2:0 1 2 3 4, 出队列: 0 1 2 3 4

    import java.util.*;
    public class QueueWithTwoStack {
      private Stack inbox=new Stack();
      private Stack outbox=new Stack();
    
      public void enqueue(int item){
        inbox.push(item);
      }
    
      public int dequeue(){
        //如果outbox是空的,while循环,把所有的inbox里的元素全部push到outbox:0 1 2 3 4
        if(outbox.isEmpty()){
          while(!inbox.isEmpty()){
            outbox.push(inbox.pop());
          }
        }
        // 一次for循环,从outbox里取出一个元素
        return (int)outbox.pop();
      }
    
      public static void main(String args[]){
        QueueWithTwoStack test=new QueueWithTwoStack();
        // push inbox: 4 3 2 1 0
        for (int i=0;i<5;i++){
          test.enqueue(i);
        }
        // pop
        for (int i=0;i<5;i++){
          int j= test.dequeue();
          System.out.println(j);
        }
      } /**output: 0 1 2 3 4 */
    }
    ➜  /tmp javac QueueWithTwoStack.java
    Note: QueueWithTwoStack.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    ➜  /tmp java QueueWithTwoStack      
    0
    1
    2
    3
    4

    原文:https://blog.csdn.net/shendezhuti/article/details/78326489

    参考java堆:https://www.runoob.com/java/java-stack-class.html

    如果没有一直坚持,也不会有质的飞跃,当生命有了限度,每个人的价值就会浮现。

    船长博客,期待共同交流提高!

    本文如对您有帮助,记得点击右下边小球【赞一下】,热烈期待您关注博客 n(*≧▽≦*)n

    0成本创业_月入5000被动收入

  • 相关阅读:
    laravel实践2.引入bootstrap
    laravel实践3.laravel Mix使用
    利用nginx 反向代理解决跨域问题
    前端压缩图片记录一下
    蒲文强java第 七 次作业
    蒲文强java第六次作业
    192403蒲文强——面向对象第五次作业
    浅析学习关于《现代软件工程——构建之法》第一章的总结
    第四次作业----两人结对编程
    第四次博客作业-结对项目
  • 原文地址:https://www.cnblogs.com/v5captain/p/14315378.html
Copyright © 2011-2022 走看看