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

  • 相关阅读:
    用MFC(C++)实现拼音搜索
    MFC里ON_COMMAND_RANGE消息映射的ID问题
    01:MFC应用程序编程
    MFC笔记(DN)
    linuxmint系统定制与配置(2)-输入法
    linuxmint系统定制与配置(3)-字体
    linuxmint系统定制与配置(1)-系统初始配置
    笔记-读官方Git教程(2)~安装与配置
    笔记-读官方Git教程(1)~认识Git
    Python中多层List展平为一层
  • 原文地址:https://www.cnblogs.com/v5captain/p/14315378.html
Copyright © 2011-2022 走看看