首页 > 编程语言 >Java有关队列的基本操作

Java有关队列的基本操作

时间:2023-09-13 21:23:30浏览次数:37  
标签:myQueue Java 队列 int front 基本操作 array rear

什么是队列?

队列是一种线性数据结构,队列中的元素只能先进先出;
队列的出口端叫做队头,入口端叫做队尾。

队列的基本操作

1.入队:

  •      只允许在队尾的位置放入元素,新元素的下一个位置将会成为新的队尾;
    
public void enQueue(int element) throws Exception{
        if((rear+1)%array.length==front){
            throw new Exception("队满!!!");
        }
        array[rear]=element;
        rear=(rear+1)%array.length;
    }

2.出队:

  •      类似于入队,只允许在对头的位置移除元素,出队元素的后一个元素将会成为新的对头;
    
  •      当一个队列经过反复的入队和出队操作,还剩下2个元素,这时又有新元素入队时,在数组不扩容的
    
  •      情况下,将队尾指针重新指向数组的首位,实现循环队列的数据结构。
    
public int deQueue() throws Exception{
        if(front==rear){
            throw new Exception("队满!!!");
        }
        int deElement=array[front];
        front=(front+1)%array.length;
        return deElement;
    }

3.判断队满的情况:

  •      当(队尾下标+1)%数组长度=队头下标时,队满;
    
  •      队尾指针指向的位置永远空出一位,所以队列最大容量比数组长度小1。
    

完整代码

点击查看代码
package Queue;

public class MyQueue {
    //定义数组
    private int[] array;
    //对头指针
    private int front;
    //队尾指针
    private int rear;

    //定义队列的构造方法(类似数组)
    public MyQueue(int capacity){
        this.array=new int[capacity];
    }

    //入队操作(element:入队元素)
    public void enQueue(int element) throws Exception{
        if((rear+1)%array.length==front){
            throw new Exception("队满!!!");
        }
        array[rear]=element;
        rear=(rear+1)%array.length;
    }

    //出队操作
    public int deQueue() throws Exception{
        if(front==rear){
            throw new Exception("队满!!!");
        }
        int deElement=array[front];
        front=(front+1)%array.length;
        return deElement;
    }

    //输出队列
    public void output(){
        for(int i=front;i!=rear;i=(i+1)%array.length){
            System.out.print(array[i]+" ");
        }
    }

    public static void main(String[] args) throws Exception{
        MyQueue myQueue=new MyQueue(6);
        myQueue.enQueue(1);
        myQueue.enQueue(2);
        myQueue.enQueue(3);
        myQueue.enQueue(4);
        myQueue.enQueue(5);
        myQueue.deQueue();
        myQueue.deQueue();
        myQueue.enQueue(6);
        myQueue.enQueue(7);
        myQueue.output();
    }
}

标签:myQueue,Java,队列,int,front,基本操作,array,rear
From: https://www.cnblogs.com/whoami000/p/17700815.html

相关文章

  • 输入界面(html,javascript)可随机生成验证码
    <!DOCTYPEhtml><html><body><h2>登录界面</h2><!--form表示表单--><formid="loginForm"><labelfor="username">用户名:</label><br><inputty......
  • 无涯教程-JavaScript - ISFORMULA函数
    描述如果对包含公式的单元格的引用,则ISFORMULA函数返回逻辑值TRUE。否则返回FALSE。语法ISFORMULA(reference)争论Argument描述Required/OptionalreferenceReferencecanbeacellreference,aformula,oranamethatreferstoacell.RequiredNotes如果引......
  • java课堂开学第一节课测试源码
    1//2//Sourcecoderecreatedfroma.classfilebyIntelliJIDEA3//(poweredbyFernFlowerdecompiler)4//56importjava.io.PrintStream;7importjava.util.ArrayList;8importjava.util.Scanner;910publicclasstest{11......
  • 无涯教程-JavaScript - ISEVEN函数
    描述如果数字为偶数,则ISEVEN函数返回TRUE,如果数字为奇数,则返回FALSE。语法ISEVEN(number)争论Argument描述Required/OptionalNumber要测试的值。如果number不是整数,则将其截断。RequiredNotes如果数字为非数字,则ISEVEN返回#VALUE!错误值。您可以在执......
  • java的配置类 取代xml配置文件
    配置类以及对注解@Value的使用//TODO:创建java的配置类取代xml配置文件@Configuration//配置类注解@ComponentScan({"com.wind.dao","com.wind.service"})//包扫描注解配置可存入多个包@PropertySource(value="classpath:jdbc.properties")//引用外部文件......
  • Java基础-2-集合
    目录简介ListSetMap互相转换简介Java中有三大类集合:List(列表)、Set(集合)、Map(映射),三者都属于接口类,分别有各自的实现。Collection为基本的集合接口,声明了集合的通用方法,List和Set都是继承于此。add(Objecto):新增对象set(intindex,Objecto):设置对象值remove(Objecto):删......
  • java调用第三方接口
    方法一:使用HttpURLConnection类调用第三方接口的示例代码:importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjava.net.URL;publicclassThirdPartyApiCaller{publicstaticvoidmain(String[]args){......
  • 无涯教程-JavaScript - ISERROR函数
    描述如果ISERROR函数引用的是Excel错误,则该函数将返回逻辑值TRUE。否则返回FALSE。语法ISERROR(value)争论Argument描述Required/OptionalvalueAnerrorRequiredNotes此函数在公式中用于测试计算输出很有用。与IF函数结合使用时,此函数提供了一种用于定位公式中......
  • 大厂裁员,社招锁 HC,行业内卷严重,Java工程师校招该何去何从?
    一、背景2021年底到2022年,受到疫情和业务发展的影响,很多大厂都开始裁员,社招也开始锁HC,只出不进。而且现在Java面试日益内卷,“面试造火箭,入职拧螺丝”已经不再是啥令人惊讶的事情。这这个大背景下,对我们的校招又会有怎样的影响,我们又该如何应对?本文简单聊下这个话题。二、校......
  • 大厂校招缩招,今年 Java 后端同学校招该何去何从?
    一、背景最近有一些学弟学妹请教一些校招相关的问题。作为一个经历过校招(校招拿到了美团、网易等公司Offer)、社招(在阿里工作),当过面试官的过来人,希望通过本文让大家能够意识到今年校招的形势,帮助大家了解校招复习的误区。前几年互联网很好找工作,尤其是985和211高校的同学,找......