Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 程序?qū)崿F(xiàn)隊列(Queue)數(shù)據(jù)結(jié)構(gòu)

    Java 實例大全

在這個實例中,我們將學習用Java實現(xiàn)隊列數(shù)據(jù)結(jié)構(gòu)。

要了解此示例,請確保您首先訪問以下教程,

示例1:實現(xiàn)堆棧的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) {

    //創(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)。

示例2:使用Queue接口實現(xiàn)堆棧

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。例如,

Java 實例大全

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清