package com.yajxit.queue;
/**
* @author yaj
* 环形(循环)队列实现
*/
public class CircleArrayQueueDemo {
/**
* 队列的最大容量
*/
private int maxSize;
/**
* 队尾指针
*/
private int front;
/**
* 队头指针
*/
private int rear;
/**
* 存放队列的数组
*/
private int[]arr;
/**
* @param maxSize
* 初始化队列
*/
public CircleArrayQueueDemo(int maxSize){
this.maxSize = maxSize;
arr=new int[maxSize];
//默认为0可以删除
front=0;
rear=0;
}
/**
* @return
* 判断队列是否满
*/
public boolean isFull(){
return (rear+1)%maxSize==front;
}
/**
* @return
* 循环队列判空
*/
public boolean isEmpty(){
return rear==front;
}
/**
* @param n
* 添加元素
*/
public void addElement(int n){
if (isFull()){
System.out.println("队列已满,无法添加元素");
}
//添加元素
arr[rear]=n;
//移动rear指针,取模
rear=(rear+1)%maxSize;
}
/**
* @return
* 循环队列出队
*/
public int popElement(){
if (isEmpty()){
throw new RuntimeException("队列为空,不能输出");
}
//1,把front元素暂时存储到一个临时变量
int value=arr[front];
//2,移动front指针
front=(front+1)%maxSize;
//3,返回front
return value;
}
}
Java数据结构之循环队列的实现
最新推荐文章于 2022-08-13 13:37:08 发布