1.java中编写一个循环队列类Queue,属性:队列数组、队列的头指针front、尾指针back、队列长size 方法: 以队头删除元素 从队尾插入元素
时间: 2024-10-27 12:07:14 浏览: 10
duilie.rar_双端队列
在Java中,我们可以创建一个`CircularQueue`类来模拟循环队列。这个类将包含四个核心属性:`queue[]`数组作为存储空间,`front`表示队头元素的索引,`back`表示队尾元素的索引,以及`size`表示当前队列中的元素数量。下面是该类的基本结构:
```java
public class CircularQueue {
private int maxSize; // 队列的最大容量
private int front, back; // 指针
private int[] queue; // 存储元素的数组
// 构造函数
public CircularQueue(int size) {
this.maxSize = size;
this.queue = new int[maxSize];
this.front = -1;
this.back = -1;
}
// 插入元素到队尾 (如果队满则抛出异常)
public void enqueue(int value) {
if (isFull()) {
throw new RuntimeException("Queue is full");
}
if (isEmpty()) {
front = back = 0;
} else {
back = (back + 1) % maxSize; // 循环更新尾指针
}
queue[back] = value;
size++;
}
// 从队头删除并返回元素
public int dequeue() {
if (isEmpty()) {
throw new RuntimeException("Queue is empty");
}
int removedValue = queue[front]; // 保存被移除的值
if (front == back) { // 如果队列只剩下一个元素,更新两个指针
front = back = -1;
} else {
front = (front + 1) % maxSize; // 循环更新头指针
}
size--;
return removedValue;
}
// 判断队列是否为空
private boolean isEmpty() {
return front == -1 || front >= size;
}
// 判断队列是否已满
private boolean isFull() {
return back == (front + maxSize - 1) % maxSize;
}
// 获取队列长度
public int getSize() {
return size;
}
}
```
阅读全文