一、队列的介绍
队列是 有序 的,可以用 数组 或者 链表来实现,而且队列遵循一个 先入先出 的原则,即存入队列的数据,要先取出,后存入的要后取出。
二、用数组模拟队列思路
1、队列是有序的,若使用数组的结构来存储队列的数据,首先要用 maxsize 来指定队列的最大容量。
2、因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear 则是随着数据输入而改变,如果用C语言中的指针描述就是队首指针与队尾指针。
三、数组模拟队列图示
四、使用java语言描述队列
4.1 定义一个ArrayQueue类
package point3;
/*
编写ArrayQueue类
*/
public class ArrayQueue {
private int maxSize; // 表示数组的最大容量
private int front; // 队列头
private int rear; // 队列尾
private int[] arr; // 该数据用于存放数据,模拟队列
// 创建队列的构造器
public ArrayQueue(int arrMaxSize){
maxSize = arrMaxSize;
arr = new int[maxSize];
front = -1; //指向队列头部,分析出front是指向队列头的前一个位置
rear = -1; //指向队列尾部,指向队列尾的数据(即是队列最后一个数据)
}
// 判断队列是否满
public boolean ifFull(){
return rear == maxSize - 1;
}
// 判断队列是否为空
public boolean isEmpty(){
return rear == front;
}
// 添加数据到队列
public void addQueue(int n){
// 判断队列是否满了
if (ifFull()){
System.out.println("队列满,不能加入数据");
return;
}
rear++; // 让rear后移
arr[rear] = n;
}
// 获取队列的数据,出队列
public int getQueue(){
// 判断队列是否为空
if (isEmpty()){
// 通过抛出异常
<