队列本身是有序队列,若使用数组的结构来存储队列的数据,有一下声明。
maxSize
数组的最大长度。为用户定义。
front
队列的头,初始化为0。
rear
队列的尾,初始化为0. 即rear所在的位置是没有元素的。
很明显当front=rear时,队列中是没有元素的。
我们假定预留一个位置。即存储的最大个数为maxSize-1. 即当front指向0,rear指向maxSize-1时(注意下标从0开始),队列满了,由此可见队列为满的条件为**(rear+1)%maxSize = front % maxSize**
CilecreArrayQenen 类
package ArrayQueue;
import java.util.Arrays;
//使用数组模拟队列,编写一个ArrayQueue类
public class CircleArrayQueue {
private final int maxSize;
private int front;
private int rear;
private int[] arr;
//创建队列的构造器
public CircleArrayQueue(int size){
maxSize = size;
arr = new int[maxSize];
front = 0;
rear = 0;
}
//判断队列是否为满
public boolean isFull(){
return (rear+1)% maxSize == front % maxSize;
}
//判断队列是否为空
public boolean isEmpty() {
return front == rear;
}
//添加数据到队列
public void addQueue(int n){
if (isFull()){
System.out.println(“队列已满”);
return;
}
arr[rear] = n ;
rear=(rear+1)%maxSize;
}
//获取队列的数据,出队列
public int getQueue(){
if (isEmpty()){
throw new RuntimeException(“队列中没有元素”);
}
int p = arr[front];
arr[front] = 0;
front=(front+1)%maxSize;
return p;
}
//显示队列的所有数据
public void showQueue(){
if (isEmpty()){
System.out.println(“队列为空”);
return;
}
System.out.println(Arrays.toString(arr));
}
//显示队列的头数据,注意不是取出数据
public void showHeadData(){
if (isEmpty()){
System.out.println(“队列为空”);
return;
}
System.out.println(arr[front]);
}
//
}
测试类
package ArrayQueue;
import java.util.Scanner;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!