概述
1)队列是一个有序列表,可以用数组或者链表实现
2)遵循先入先出FIFO得原则
数组模拟队列思路
队列本身是有序列表,若使用数组得结构来存储队列的数据
因为队列的输出输入分别从前后端来处理,因此需要两个变量分别记录前后端的下标,front会随着数据输出而改变,rear会随着数据输入而改变
当我们将数据存入队列时,成为addQueue,处理步骤而两个.
1)将尾指针后移:rear+1,当frontrear[空]
2)尾指针小于队列最大下标maxsize-1,则将数据存入rear所指的数组元素中,否则无法存入数据.rearmaxSize-1[满]
public static ArrayQueueDemo{
//表示数组的最大容量
private int maxSize;
//队列头
private int front;
//队列尾
private int rear;
//该数据用于存放数据,模拟队列
private int[] arr;
//创建队列的构造器
public ArrayQueue(int arrMaxSize)
{
maxSize =arrMaxSize;
arr=new int[maxSize];
//指向队列头部,分析出front 是指向队列头的前一个位置
front=-1;
//指向队尾
rear=-1;
}
//是否满队
public boolean isFull(){
return rear==maxSize-1;
}
//是否空对
public boolean isEmpty(){
return rear==front;
}
//入队
public void addQueue(int n)
{
//是否满队
if(isFull){
throw new IndexOutOfBoundsException("");
}
rear++;
arr[rear]=n;
}
public int getQueue(){
//判断队列是否空
if(isEmpty){
throw new RuntimeException("");
}
front++;
return arr[front];
}
}