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被动收入

  • 相关阅读:
    51) 项目管理过程简述
    50) 构建完美Docker镜像
    49) 检查Kubernetes集群是否健康
    48) linux运维简答题
    47) 云架构演变 [ECS4]
    46) ECS弹性伸缩和GRE隧道 [ECS3]
    php单文件上传和多文件上传
    PHP文件处理及高级应用
    PHP八种数据类型+使用实例
    php Session方法实例
  • 原文地址:https://www.cnblogs.com/v5captain/p/14315378.html
Copyright © 2011-2022 走看看