队列的特点: 先进先出
代码:
public class Demo2 {
private Object[] arr; //该数组用于存放数据,模拟队列
private int max; //表示数组的最大容量
private int front; //队列头
private int behind; //队列尾
//构造方法
public Demo2(int value) {
max = value;
arr = new Object[value];
front=-1; //指向队列头部,front是指向队列头的前一个位置
behind = -1;//指向对列尾,指向对列尾的数据(即就是队列最后一个数据)
}
//判断是否满队列
public boolean isFull(){
return behind==max;
}
//判断是否空队列
public boolean isEmpty() {
return behind==front;
}
//添加数据
public void insert(int value){
if (isFull()){
}else {
behind++; //让behind向后移
arr[behind]=value;
}
}
//取出数据
public Object remove(){
//判断是否为空
if (isEmpty()){
throw new RuntimeException("队列为空,不能取出数据");
}
front++;
return arr[front];
}
}
扩容
public void insert(int value) {
if(isFull()) {
Object[] brr = new Object[arr.length * 2];
for (int i = 0; i < arr.length; i++) {
brr[i] = arr[i];
}
arr = brr;
}else {
//如果队列未满,分为两种情况 ,一种情况尾部指针已经指向最后一个元素,但是由于有出队列的情况所以size不等于maxsize0
//另一种情况是尾部没有指向最后一个元素
if(rear == maxsize-1) {
rear = -1;
}
arr[++rear] = value;
size++;//队列中实际个数加1
}
}