介绍
MaxSize
最大容量
front
指向队列头部,是队列头的前一个位置
rear
指向队列尾部,是队列最后一个数据
入队列、出队列
加数据:尾指针rear 往上走
去数据:头指针front 往下走
思路
package 队列;
import JiHe.Array;
import java.util.Arrays;
public class Queue {
private int front;//队列头指针
private int rear;//队列尾指针
private int maxSize;//队列数组的最大容量
private int[]arr;//用于存放数据的数组,模拟队列
//创建队列的构造器
public Queue(int maxSize){
this.maxSize = maxSize;
arr = new int[maxSize];
front = -1;//指向队列头的前一个位置
rear = -1;//指向队列尾数据
}
//判断队列是否满
public boolean isFull(){
return rear == maxSize -1;//因为数组是从0开始的,所以最大是要减一
}
//判断队列是否为空
public boolean isEmpty(){
return rear == front;
}
//添加数据到队列
public void addQueue(int n){
//添加之前,先判断是否是满的
if (isFull()){
System.out.println("队列满,不能添加数据");
return;
}
rear++;//添加数据就要 让rear后移
arr[rear] = n;
}
//获取队列的数据,出队列
public int getQueue(){
//出之前,先判断队列是否为空
if (isEmpty()){
//通过抛出异常
throw new RuntimeException("队列空,不能获取数据");
}
front++;//front后移,原来front是队头前一个,后移就是队头
return arr[front];
}
//显示队列的所有数据
public void showQueue(){
//就是遍历一下数组
if (isEmpty()){
System.out.println("队列是空的,没有数据");
return;
}else System.out.println(Arrays.toString(arr));
}
}