Java 程序实现队列(Queue)数据结构
在这个实例中,我们将学习用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("Queue is full");
}
else {
if (front == -1) {
//标记 front 表示队列的第一个元素
front = 0;
}
rear++;
//在后面插入元素
items[rear] = element;
System.out.println("Insert " + element);
}
}
//从队列中删除元素
int deQueue() {
int element;
//如果队列为空
if (isEmpty()) {
System.out.println("Queue is empty");
return (-1);
}
else {
//从队列前面删除元素
element = items[front];
//如果队列中只有一个元素
if (front >= rear) {
front = -1;
rear = -1;
}
else {
//将下一个元素标记为 front
front++;
}
System.out.println( element + " Deleted");
return (element);
}
}
//显示队列元素
void display() {
int i;
if (isEmpty()) {
System.out.println("Empty Queue");
}
else {
//显示队列的front
System.out.println("\nFront index-> " + front);
//显示队列的元素
System.out.println("Items -> ");
for (i = front; i <= rear; i++)
System.out.print(items[i] + " ");
// 显示队列的尾部
System.out.println("\nRear index-> " + rear);
}
}
public static void main(String[] args) {
//创建一个Queue类的对象
Queue q = new Queue();
//尝试从队列中删除元素
// 当前队列为空
// 因此无法删除
q.deQueue();
// 将元素插入队列
for(int i = 1; i
q.enQueue(i);
}
// 无法将第6个元素添加到队列中,因为队列已满
q.enQueue(6);
q.display();
// deQueue删除首先输入的元素,例如:1
q.deQueue();
//现在我们只有4个元素
q.display();
}
}
输出结果Queue is empty
Insert 1
Insert 2
Insert 3
Insert 4
Insert 5
Queue is full
Front index-> 0
Items ->
1 2 3 4 5
Rear index-> 4
1 Deleted
Front index-> 1
Items ->
2 3 4 5
Rear index-> 4
在上面的示例中,我们已经用Java实现了队列数据结构。
示例2:使用Queue接口实现堆栈
Java提供了一个可用于实现队列的内置接口 Queue 。
示例import java.util.Queue;
import java.util.LinkedList;
class Main {
public static void main(String[] args) {
//使用LinkedList类创建队列
Queue numbers = new LinkedList<>();
// enqueue
//在队列尾部插入元素
numbers.offer(1);
numbers.offer(2);
numbers.offer(3);
System.out.println("Queue: " + numbers);
// dequeue
//从队列前面删除元素
int removedNumber = numbers.poll();
System.out.println("删除的元素: " + removedNumber);
System.out.println("删除后排队: " + numbers);
}
}
输出结果Queue: [1, 2, 3]
删除的元素: 1
删除后排队: [2, 3]
在上面的示例中,我们使用了Java的Queue接口以实现队列。在这里,我们使用了LinkedList实现Queue接口的类。Numbers.offer() - 将元素插入到队列的末尾
Numbers.poll() - 从队列的最前面删除一个元素
注意,我们在创建队列时使用了尖括号。它表示队列是泛型类型。要了解有关泛型的更多信息,请访问Java 泛型。
我们还可以使用其他接口和类代替Queue 和 LinkedList。例如,