在這個實例中,我們將學習用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) { //標記 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) { //創(chuàng)建一個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(); //現(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。例如,