public class ArrayQueueDemo {
public static void main(String[] args) {
ArrayQueue arrayQueue = new ArrayQueue(3);
arrayQueue.addQueue(100);
arrayQueue.addQueue(200);
arrayQueue.addQueue(300);
arrayQueue.showQueue();
System.out.println("队列头:" +arrayQueue.headQueue());
System.out.println("出队列:" + arrayQueue.getQueue());
System.out.println("出队列:" + arrayQueue.getQueue());
System.out.println("队列头现在变为:" +arrayQueue.headQueue());
}
}
class ArrayQueue{
private int maxSize; //数组的最大容量
private int front;//队列头
private int rear;//队列尾
private int[] arr; //模拟队列存储 存储数据
//构造函数
public ArrayQueue(int arrMaxSize){
//初始化数据
maxSize = arrMaxSize;
arr = new int[maxSize];
front = -1; //指向队列头部 初始所指向位置不存在数据
rear = -1;//指向队列尾部 初始所指向位置就是最后一个数据的位置
}
//判断当前队列是否已满
public boolean isFull(){
return rear == maxSize-1;
}
//判断队列是否已经为空
public boolean isEmpty(){
return rear == front;
}
//向队列中添加数据
public void addQueue(int n){
//判断队列是否已满
if(isFull()){
throw new RuntimeException("队列已满无法继续添加");
}
//添加数据 尾指针后移
arr[++rear] = n;
}
//获取队列数据,出队列
public int getQueue(){
//判断队列是否为空
if(isEmpty()){
throw new RuntimeException("队列为空,无法获取数据");
}
return arr[++front];
}
//显示队列所有数据
public void showQueue(){
if(isEmpty()){
System.out.println("当前队列为空");
return;
}
for (int i = 0; i < arr.length ; i++) {
System.out.printf("arr[%d]=%d\n",i,arr[i]);
}
}
//显示队列头数据 注意不是取出数据
public int headQueue(){
if(isEmpty()){
throw new RuntimeException("队列为空,没有数据");
}
return arr[front+1];
}
}
使用数组模拟队列
最新推荐文章于 2024-08-23 15:54:50 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)