前言 银行处理排队问题,当别人的业务办理完成之后,就会轮到下一个
`
一、队列是什么?队列本身是一个有序列表,因为队列的输出输入分别从前后端处理,front会随着数据输出改变,rear是随着输入改变而改变
队列的特点:先入先出
maxSize:队列长度
数组模拟队列:
将数据存入队列时:首先考虑队列是否已经满了(即rear=maxSize-1),因为数组下标从开始,所以减一
队列为空的时候:rear==front;
数组模拟队列代码如下(示例):
class ArrayQueue{
private int maxSize;
private int front;
private int rear;//尾部
private int arr[]=null;
//初始化
public ArrayQueue(int maxSize)
{ this.maxSize=maxSize;
front=-1;
rear=-1;
arr=new int[maxSize];
}
//提供方法
//1.判断队列是否满了
public boolean isFull()
{
return rear==maxSize-1;
}
//2.判断队列是否为空
public boolean isNull()
{
return front==rear;
}
//3.添加数据到队列当中:动rear
public void addQueue(int data)
{
if(isFull())
{
System.out.println("当前队列已经满了,不能添加数据");
return;
}
else
{
//
rear++;//让rear后移
arr[rear]=data;
}
}
//4.获取队列数据:动front
//先入先出,出的是front
public int getQueue()
{
if(isNull())
{//throw直接导致代码中断
throw new RuntimeException("队列为空,没有数据");
}
else
{
front++;//front后移
return arr[front];
}
}
//5:得到队列头
public int getHead()
{ if(isNull())
{
throw new RuntimeException("队列为空,没有队列头");
}
front++;
return arr[front];
}
//显示队列所有数据
public void showQueue()
{
if(isNull())
{
System.out.println("队列为空");
return;
}
for (int i = 0; i < arr.length; i++) {
System.out.println("arr["+i+"]="+arr[i]);
}
}
}



