文章目录
实现代码
class CircleArrayQueue{
//成员属性:
private int maxsize;//队列最大容量
private int front;//队列头,指向队头第一个元素
private int rear;//队列尾,指向队尾元素的下一个坐标
private int[] arr;//模拟队列的数组
//构造器
public CircleArrayQueue(int maxsize){
//初始化成员属性
//设置最大容量
this.maxsize = maxsize;
//初始化队头
this.front = 0;
//初始化队尾
this.rear = 0;
//创建队列数组
arr = new int[maxsize];
}
//成员方法
//判断队列是否满
public boolean isFull() {
//整个队列会空出一个空间作为约定
return (rear + 1)%maxsize == fron
}
//判断队列是否为空
public boolean isEmpty(){
return front == rear;
}
//入队
public void addQueue(int val){
if(isFull()) {
System.out.println("队列已满,入队失败
return ;
}
//将数据插入队列
arr[rear] = val;
//移动rear
rear = (rear + 1)%maxsize;
}
//出队
public int getQueue() {
//先判断队列是否为空
if(isEmpty()){
System.out.println("队列为空,出队失败
System.exit(0);
}
//保存对头数据
int temp = arr[front];
//移动front
front = (front + 1)%maxsize;
return temp;
}
//遍历队列所有数据,遍历的思路是从front开始,
// 一直到front + (rear + maxsize - front
public void traverseQueue() {
//判断队列是否为空
if(isEmpty()) {
System.out.println("队列为空,遍历失败
System.exit(0);
}
System.out.println("开始遍历:");
//从队列头开始遍历
for(int i= front ;i<front + (rear
System.out.printf("%d\t",arr[
}
System.out.println();
}
//获取队列头数据,不是出队
public int headQueue(){
//判断队列是否为空
if(isEmpty()) {
System.out.println("队列为空,显示队头
System.exit(0);
}
return arr[front];
}
}