class queue{
//我么假设队列实际上就是一个容器 , 把他想象成一个杯子
//既然是容器,那么我们得设置最大值和最小值
private int maxsize; //队列的最大值(the maximum of queue)
private int rear ; //队列的 尾部 (the minimum of queue) 队列的尾部 是用来 加队列的 每加一个数据 队列尾部就上升一格
private int front ; //队列的头部 队列的头部 是用来出队列的 为了保持 有个指针 指向尾部 方便取数据
private int[] arr ;//队列的容器 ( the container of queue)
/**
* 需要从外部给容器队列设置最大值
* 初始化容器
* @param maxsize
*/
public queue(int maxsize){
this.maxsize=maxsize;
arr=new int[maxsize];
/*
为什么 给容器 的初始位置设置成-1 ?
因为 数组的的第一个位置是0
当表示为0 的时候 代表数组已经有数据了
*/
front=-1; //给容器头部 设置初始值 为-1
rear =-1; //给容器尾部 设置初始值 为-1
}
//判断队列是否满了
public boolean isFull(){
//当队列的底部达到最高点说明队列满了
return maxsize-1 == rear;
}
//判断对列是否为空
public boolean isEmpty(){
return rear==front;
}
public void addQueue(int n){
if (isFull()){
System.out.println("队列满");
return;
}
rear++; //当底部指针上移
arr[rear]=n;
}
//取出数据
public int getData(){
//首先队列为空的话, 无法取出数据
if (isEmpty()){
throw new RuntimeException("队列为空,无法取出数据");
}
front++;
return arr[front];
}
//it shows all data for the queue
public void showData(){
if (isEmpty()){
System.out.println("队列为空,无法取出数据");
return;
}
for (int i = 0; i < arr.length; i++) {
System.out.println("-------------"+arr[i]+"--------------");
}
}
//显示队列的头部
public int getHand(){
if (isEmpty()){
throw new RuntimeException("队列为空,无法取出数据");
}
//显示头数据
return arr[front+1];
}
}