首页 > 编程语言 >java使用数组实现队列

java使用数组实现队列

时间:2023-04-23 11:06:37浏览次数:48  
标签:arrInt java 队列 int 数组 front return public


1.1.  队列的数据结构

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

1.2.  Java实现

QueueTest


package ch04;
 
public class QueueTest {
 
    public static void main(String[] args) {
       ArrayQueue queue = new ArrayQueue(10);
 
       System.out.println(queue.isEmpty());
 
       for (int i = 0; i < 10; i++) {
           queue.insert(i);
       }
       System.out.println(queue.isFull());
 
       while (!queue.isEmpty()) {
           System.out.println(queue.remove());
       }
    }
 
}
 
class ArrayQueue {
    private int[] arrInt;// 内置数组
    private int front;// 头指针
    private int rear;// 尾指针
 
    public ArrayQueue(int size) {
       this.arrInt = new int[size];
       front = 0;
       rear = -1;
    }
 
    /**
     * 判断队列是否为空
     *
     * @return
     */
    public boolean isEmpty() {
       return front == arrInt.length;
    }
 
    /**
     * 判断队列是否已满
     *
     * @return
     */
    public boolean isFull() {
       return arrInt.length - 1 == rear;
    }
 
    /**
     * 向队列的队尾插入一个元素
     */
    public void insert(int item) {
       if (isFull()) {
           throw new RuntimeException("队列已满");
       }
       arrInt[++rear] = item;
    }
 
    /**
     * 获得对头元素
     *
     * @return
     */
    public int peekFront() {
       return arrInt[front];
    }
 
    /**
     * 获得队尾元素
     *
     * @return
     */
    public int peekRear() {
       return arrInt[rear];
    }
 
    /**
     * 从队列的对头移除一个元素
     *
     * @return
     */
    public int remove() {
       if (isEmpty()) {
           throw new RuntimeException("队列为空");
       }
       return arrInt[front++];
    }
}


 


运行结果如下:

false

true

0

1

2

3

4

5

6

7

8

9

标签:arrInt,java,队列,int,数组,front,return,public
From: https://blog.51cto.com/u_6784072/6216845

相关文章

  • java用数组实现栈
    1.1. 栈的数据结构栈是一种先进后出的数据结果,只能在一端(称为栈顶(top))对数据项进行插入和删除。1.2. Java实现StackTestpackagech04;publicclassStackTest{publicstaticvoidmain(String[]args){ArrayStackstack=newArrayStack(10);......
  • Json字符串转换为java对象
    1.  Json字符串转换为java对象1.1. Json字符串转换为javabeanJson2Bean.javapackagejackson;importjava.io.IOException;importorg.codehaus.jackson.map.ObjectMapper;publicclassJson2Bean{publicstaticvoidmain(String[]args)throwsIOExcepti......
  • java利用json-lib操作json
    1.1. 下载json-lib.jarhttp://sourceforge.net/projects/json-lib/files/json-lib/1.2. Java对象转换为json1.2.1.  Map对象转换为jsonMap2Json.javapackagejson;importjava.util.HashMap;importjava.util.Map;importnet.sf.json.JSONArray;publicclassMap2......
  • Java使用maven-invoker插件进行maven相关操作
    官方文档地址:https://maven.apache.org/shared/maven-invoker/index.htmlApacheMavenInvoker在许多情况下,工具(包括Maven本身)可能希望在干净的环境中启动Maven构建。为什么呢?也许您希望避免Maven插件产生的副作用污染当前系统环境。也许您想从与当前${user.dir}不同的工作目......
  • 数据结构与算法跳表之java实现
    跳表一个有序链表的搜索、添加、删除的平均时间复杂度都为O(n),那么能否利用二分搜索优化有序链表,将搜索、添加、删除的平均时间复杂度降低至O(logn)呢?链表没有像数组那样的高效随机访问(O(1)时间复杂度),所以不能像有序数组那样直接进行二分搜索优化。那有没有其他办法让有序链表的搜......
  • 十大排序算法快速排序之Java实现
    快速排序快速排序(QuickSort)是对冒泡排序的一种改进,采用的是分治策略(一般与递归结合使用),以减少排序过程中的比较次数。快速排序在1960年由查尔斯·安东尼·理查德·霍尔(CharlesAntonyRichardHoare,缩写为C.A.R.Hoare)提出,昵称为东尼·霍尔(TonyHoare)。算法步骤从数组中选择一个......
  • Java虚拟机之JVM工具监控调优
    我是攻城师(woshigcs)前几篇我们学习了,JVM里面的运行结构,GC算法,以及各种垃圾收集器的优劣点,那么本篇我们来看下如何使用一些虚拟机性能监控工具,来监控和快速处理故障,当JVM出现一些故障时,我们通常从如下的几个方面进行着手分析,包括运行日志,异常堆栈,GC日志,线程快照(threaddump/javacor......
  • Java_final 和 构造代码块
    书上的笔记转移:【REVIEW】:final除了不被重写、不被修改、不被继承、值不可变等等。。。还有以下几个特性: 1.如果成员变量的final修饰未进行赋值,那么是可以在构造方法和构造代码块进行赋值的,如果赋值成功,那么后面都不可能在进行赋值了。 ---2. 静态代码块我知道,就是只执......
  • C语言--数组1
    一维数组和二维数组【一维数组的创建和初始化】数组的创建数组是一组相同类型元素的集合。数组的初始化数组在创建时不指定数组的大小就要初始化。数组的元素个数根据初始化内容来确定。但对于下面代码要区分,其在内存中如何分配。chararr1[]="abc";chararr2[3]={'a','b','c'......
  • Java泛型
    Java泛型概念Java泛型是一种在编译时进行类型检查和类型推断的机制,它可以让我们编写更加通用、可重用的代码,提高了代码的可读性和可维护性,同时保证了类型安全。Java泛型的核心思想是类型参数化,即在类、接口或方法的定义中使用类型参数来代替具体的类型,这些类型参数在实例化时被具体......