数据结构-数据模拟队列
模拟单向队列
class ArrayQueue {
private int maxSize;
private int front;
private int rear;
private int[] arr;
public ArrayQueue(int maxSize) {
this.maxSize = maxSize;
arr = new int[maxSize];
front = -1;
rear = -1;
}
// 判断是否为满
public boolean isFull() {
return rear == maxSize - 1;
}
// 判断是否为空
public boolean isEmpty() {
return rear == front;
}
// 添加数据
public void add(int data) {
if (isFull()) {
System.out.println("队列已满");
return;
}
rear++;
arr[rear] = data;
}
// 获取队列数据
public int get() {
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
front++;
return arr[front];
}
// 显示所有数据
public void showQueue() {
if (isEmpty()) {
System.out.println("队列为空");
return;
}
for (int i :
arr) {
System.out.println(i);
}
}
// 获取头部数据
public int getHead() {
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
front++;
return arr[front];
}
}
模拟双向循环队列
class ArrayQueue2 {
private int maxSize;//3
private int front;//0
private int rear;//0
private int[] arr;
public ArrayQueue2(int maxSize) {
this.maxSize = maxSize;
arr = new int[maxSize];
front = 0;
rear = 0;
}
//判断是为为满
public boolean isFull() {
return (rear+1)%maxSize == front;
}
//判断是否为空
public boolean isEmpty() {
return rear == front;
}
//添加数据
public void add(int data) {
if (isFull()) {
System.out.println("队列已满");
return;
}
arr[rear] = data;// 0 1 2
rear = (rear+1) % maxSize;
}
// 获取队列数据
public int get() {
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
int value = arr[front];
front = (front+1) %maxSize;
return value;
}
// 显示所有数据
public void showQueue() {
if (isEmpty()) {
System.out.println("队列为空");
return;
}
for (int i = front; i < front + size(); i++) {
System.out.println(i%maxSize +" "+arr[i%maxSize]);
}
}
// 获取头部数据
public int getHead() {
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
int v=arr[front];
front++;
return v;
}
// 获取有效数据个数
public int size(){
return (rear + maxSize - front)%maxSize;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通