下面是Java代码实现循环队列的完整攻略。
理解循环队列的概念
循环队列是一种常用的队列数据结构,与普通队列的区别在于,当队列的队尾到达队列的最后一个位置时,再插入一个元素时,队尾会从队列的开头重新开始(即环状)。这样既可以节省空间,又可以提高存取效率。
代码实现
定义循环队列类
首先,我们需要定义一个循环队列类。代码如下:
public class CircularQueue {
private int[] queue; // 队列数组
private int front; // 队头指针
private int rear; // 队尾指针
private int size; // 队列大小
// 创建循环队列
CircularQueue(int capacity) {
queue = new int[capacity];
front = 0;
rear = 0;
size = 0;
}
// 入队
public void enqueue(int data) {
if (isFull()) {
throw new RuntimeException("队列已满");
}
queue[rear] = data;
rear = (rear + 1) % queue.length;
size++;
}
// 出队
public int dequeue() {
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
int data = queue[front];
front = (front + 1) % queue.length;
size--;
return data;
}
// 判断队列是否已满
private boolean isFull() {
return (rear + 1) % queue.length == front;
}
// 判断队列是否为空
public boolean isEmpty() {
return front == rear;
}
}
在定义类时,我们定义了4个成员变量:
- 队列数组
queue
,用于存放队列元素。 - 队头指针
front
,指向队头元素。 - 队尾指针
rear
,指向队尾元素。 - 队列大小
size
,记录队列中元素的数量。
类中有两个构造方法:默认构造方法和指定大小的构造方法。我们可以通过调用构造方法来创建循环队列对象。
在类中定义了 enqueue
和 dequeue
两个方法,分别用于入队和出队操作。入队操作会将元素加入到队列中。当队列已满时,会抛出异常。出队操作会从队列中移除一个元素,并返回队头元素的值。当队列为空时,会抛出异常。
最后,我们在类中定义了两个私有方法 isFull
和 isEmpty
,用于判断队列是否已满和是否为空。
示例说明1:循环队列入队操作
下面通过一个示例来说明循环队列的入队操作。
CircularQueue queue = new CircularQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
在这个示例中,我们创建了一个队列对象,指定了队列的大小为5。然后对该队列进行入队操作,依次插入值为1、2、3、4、5的元素。当插入第5个元素时,队列已满,无法再插入元素,抛出异常。
示例说明2:循环队列出队操作
下面通过一个示例来说明循环队列的出队操作。
CircularQueue queue = new CircularQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
queue.dequeue();
queue.dequeue();
在这个示例中,我们创建了一个队列对象,并插入值为1、2、3、4、5的元素。然后对该队列进行出队操作,依次移除队头元素。当移除前两个元素时,队列中还有3个元素。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java代码实现循环队列的示例代码 - Python技术站