在這個實例中,我們將學(xué)習(xí)用Java實現(xiàn)隊列數(shù)據(jù)結(jié)構(gòu)。
要了解此示例,請確保您首先訪問以下教程,
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) {
//標(biāo)記 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 {
//將下一個元素標(biāo)記為 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) {
//創(chuàng)建一個Queue類的對象
Queue q = new Queue();
//嘗試從隊列中刪除元素
// 當(dāng)前隊列為空
// 因此無法刪除
q.deQueue();
// 將元素插入隊列
for(int i = 1; i < 6; i ++) {
q.enQueue(i);
}
// 無法將第6個元素添加到隊列中,因為隊列已滿
q.enQueue(6);
q.display();
// deQueue刪除首先輸入的元素,例如:1
q.deQueue();
//現(xiàn)在我們只有4個元素
q.display();
}
}輸出結(jié)果
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
在上面的示例中,我們已經(jīng)用Java實現(xiàn)了隊列數(shù)據(jù)結(jié)構(gòu)。
Java提供了一個可用于實現(xiàn)隊列的內(nèi)置接口 Queue 。
import java.util.Queue;
import java.util.LinkedList;
class Main {
public static void main(String[] args) {
//使用LinkedList類創(chuàng)建隊列
Queue<Integer> 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);
}
}輸出結(jié)果
Queue: [1, 2, 3] 刪除的元素: 1 刪除后排隊: [2, 3]
在上面的示例中,我們使用了Java的Queue接口以實現(xiàn)隊列。在這里,我們使用了LinkedList實現(xiàn)Queue接口的類。
Numbers.offer() - 將元素插入到隊列的末尾
Numbers.poll() - 從隊列的最前面刪除一個元素
注意,我們在創(chuàng)建隊列時使用了尖括號<Integer>。它表示隊列是泛型類型。要了解有關(guān)泛型的更多信息,請訪問Java 泛型。
我們還可以使用其他接口和類代替Queue 和 LinkedList。例如,