跳到主要内容

Java程序实现队列数据结构

要理解这个示例,你应该具备以下 Java 编程主题的知识:

示例 1:Java 程序实现队列

public class Queue {
int SIZE = 5;
int items[] = new int[SIZE];
int front, rear;

Queue() {
front = -1;
rear = -1;
}

// 检查队列是否已满
boolean isFull() {
if (front == 0 && rear == SIZE - 1) {
return true;
}
return false;
}

// 检查队列是否为空
boolean isEmpty() {
if (front == -1)
return true;
else
return false;
}

// 向队列中插入元素
void enQueue(int element) {

// 如果队列已满
if (isFull()) {
System.out.println("队列已满");
}
else {
if (front == -1) {
// 标记 front 表示队列的第一个元素
front = 0;
}

rear++;
// 在 rear 处插入元素
items[rear] = element;
System.out.println("插入 " + element);
}
}

// 从队列中删除元素
int deQueue() {
int element;

// 如果队列为空
if (isEmpty()) {
System.out.println("队列为空");
return (-1);
}
else {
// 从队列的前端移除元素
element = items[front];

// 如果队列只有一个元素
if (front >= rear) {
front = -1;
rear = -1;
}
else {
// 将下一个元素标记为 front
front++;
}
System.out.println( element + " 已删除");
return (element);
}
}

// 显示队列中的元素
void display() {
int i;
if (isEmpty()) {
System.out.println("队列为空");
}
else {
// 显示队列的前端
System.out.println("\n队列前端索引-> " + front);

// 显示队列中的元素
System.out.println("元素 -> ");
for (i = front; i <= rear; i++)
System.out.print(items[i] + " ");

// 显示队列的后端
System.out.println("\n队列后端索引-> " + rear);
}
}

public static void main(String[] args) {

// 创建 Queue 类的对象
Queue q = new Queue();

// 尝试从队列中删除元素
// 当前队列为空
// 所以无法删除
q.deQueue();

// 向队列中插入元素
for(int i = 1; i < 6; i ++) {
q.enQueue(i);
}

// 第 6 个元素不能添加到队列中,因为队列已满
q.enQueue(6);

q.display();

// deQueue 移除最先进入的元素,即 1
q.deQueue();

// 现在我们只剩下 4 个元素
q.display();

}
}
```**输出**

```java
队列为空
插入 1
插入 2
插入 3
插入 4
插入 5
队列已满

队列前端索引-> 0
元素 ->
1 2 3 4 5
队列后端索引-> 4
1 已删除

队列前端索引-> 1
元素 ->
2 3 4 5
队列后端索引-> 4

在上面的示例中,我们实现了 Java 中的队列数据结构。

要了解队列的工作原理,请访问 队列数据结构

示例 2:使用队列接口实现栈

Java 提供了内置的 Queue 接口,可以用来实现队列。

import java.util.Queue;
import java.util.LinkedList;

class Main {

public static void main(String[] args) {
// 使用 LinkedList 类创建队列
Queue<Integer> numbers = new LinkedList<>();

// 入队
// 在队列的后端插入元素
numbers.offer(1);
numbers.offer(2);
numbers.offer(3);
System.out.println("队列: " + numbers);

// 出队
// 从队列的前端删除元素
int removedNumber = numbers.poll();
System.out.println("移除的元素: " + removedNumber);

System.out.println("删除后的队列: " + numbers);
}
}

输出

队列: [1, 2, 3]
移除的元素: 1
删除后的队列: [2, 3]

在上面的示例中,我们使用了 Queue 接口在 Java 中实现队列。这里,我们使用了实现 Queue 接口的 LinkedList 类。

  • numbers.offer() - 将元素插入到队列的后端
  • numbers.poll() - 从队列的前端移除一个元素

注意,我们在创建队列时使用了尖括号 <Integer>。它表示队列是泛型的。

我们也可以使用除了 QueueLinkedList 之外的其他接口和类。例如,