package com.atzhanyuan.queue;
public class QueueArrayDemo {
public static void main(String[] args) {
}
}
//使用数组模拟队列-编写一个QueueArray类
class QueueArray {
private int maxSize;//表示数组的最大容量
private int front;//队列头
private int rear;//队列尾
private int[] arr;//该数组用于存放数据, 模拟队列
//创建队列的构造器
public QueueArray(int arrMaxSize) {
maxSize = arrMaxSize;
arr = new int[maxSize];
front = -1;//指向队列的头部,front 是指向队列头的前一个位置
rear = -1;//指向队列的尾部,指向队列尾的数据(即队列的最后一个数据)
}
//判断队列是否满
public boolean isFull(){
return rear == maxSize - 1;
}
//判断队列是否空
public boolean isEmpth(){
return front == rear;
}
//添加数据到队列
public void addQueue(int n){
//判断队列是否已满
if (isFull()){
System.out.println("队列已满,不能加入数据!");
return;
}
rear++;//让rear后移
arr[rear] = n;
}
//获取队列的数据,出队列
public int getQueue(){
//判断队列是否空
if (isEmpth()){
// System.out.println("队列已空,不能取数数据!");
// return -1;//不能用return语句,应当用一个异常处理
throw new RuntimeException("队列空, 不能取数据!");
}
front++;//front后移
return arr[front];
}
//显示队列的所有数据
public void showQueue(){
//遍历
if (isEmpth()){
System.out.println("队列为空,没有数据!");
}
for (int i = 0; i < arr.length; i++) {
System.out.printf("arr[%d]=%dn",i, arr[i]);
}
}
//显示队列的头数据
public int FrontQueue(){
//判断
if (isEmpth()){
throw new RuntimeException("队列为空,没有数据!");
}
return arr[front + 1];
}
}