直接上代码:
public class duilie {
public static void main(String[] args) {
}
/**
* 这是一个队列类,先入先出,具体包含队列的属性,定义以及对队列的操作
* 这里采用数组模拟队列,一个队列自然包括头部,尾部,最大长度
*/
static class ArrayQueue{
private int head;
private int rear;
private int[] arr;
private int maxSize;
/**
* 第一步仍然是编写构造方法来创建的对象
* 输入整个队列的最大长度
*/
public ArrayQueue(int maxSize){
this.maxSize=maxSize;
arr=new int[maxSize];
//这里让都和尾都等于-1,因为队列刚刚初始化,没有数据
head=-1;
rear=-1;
}
/**
* 判断数组是否为空,如果是,返回true
*/
public boolean isEmpty(){
//如果头和尾相等,链表自然为空
return head==rear;
}
/**
* 判断数组是否为满
*/
public boolean isFull(){
//如果尾节点是最大长度-1(毕竟是数组),那么队列已满
return rear==maxSize-1;
}
/**
* 接着便是添加数据,n是数据,为了满足队列的特性
* 我们设置了入只能在队列的尾部入,出只能在队列的头部出
*/
public void addQueue(int n){
if (isFull()){
System.out.println("队列已满");
return;
}
rear++;
arr[rear]=n;
}
/**
* 入队列之后是出队列
* 获取队列的数据,出队列
*/
public int outQueue(){
if (isEmpty()){
throw new RuntimeException("队列是空的,不能取出数据");
}
head++;
return arr[head];
}
/**
* 显示队列中的所有数据
*/
public void showQueue(){
if (isEmpty()){
System.out.println("队列是空的,没有数据");
}
for (int i=0;i<arr.length;i++){
System.out.printf("arr[%d]=%d\n", i,arr[i]);
}
}
/**
* 获取队列中的头数据,不是取出
*/
public int getHead(){
if (isEmpty()){
throw new RuntimeException("队列是空的,不能取出数据");
}
return arr[head+1];
}
}
}