黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java中隊列結構是這樣實現的

Java中隊列結構是這樣實現的

更新時間:2021-11-01 10:44:30 來源:動力節(jié)點 瀏覽1249次

隊列是編程中一種有用的數據結構。類似于電影院外的售票隊列,第一個進入隊列的人就是第一個拿到票的人。

Java隊列遵循先進先出 (FIFO)規(guī)則 - 先進入的項目是先出的項目。

在上圖中,由于 1 在 2 之前保留在隊列中,因此它也是第一個從隊列中刪除的。它遵循先進先出規(guī)則。

在編程術語中,將項目放入隊列稱為enqueue,從隊列中移除項目稱為dequeue。

我們可以使用任何編程語言(如 C、C++、Java、Python 或 C#)實現隊列,但規(guī)范幾乎相同。

隊列的基本操作

隊列是一個對象(一種抽象數據結構 - ADT),它允許以下操作:

Enqueue : 向隊列末尾添加一個元素

Dequeue : 從隊列前面移除一個元素

IsEmpty : 檢查隊列是否為空

IsFull : 檢查隊列是否已滿

Peek:獲取隊列前端的值而不移除它

隊列的工作

隊列操作的工作方式如下:

兩個指針和跟蹤隊列的第一個元素

跟蹤隊列的最后一個元素

最初,設置值和-1

入隊操作

檢查隊列是否已滿

對于第一個元素,設置值到 0

增加索引 1

在指向的位置添加新元素 

出隊操作

檢查隊列是否為空

返回指向的值增加索引 1

對于最后一個元素,重置值和-1

我們通常使用數組來實現 Java 和 C/++ 中的隊列。對于 Python,我們使用列表。

// Queue implementation in 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 = 0;
      rear++;
      items[rear] = element;
      System.out.println("Inserted " + 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;
      } /* Q has only one element, so we reset the queue after deleting it. */
      else {
        front++;
      }
      System.out.println("Deleted -> " + element);
      return (element);
    }
  }

  void display() {
    /* Function to display elements of Queue */
    int i;
    if (isEmpty()) {
      System.out.println("Empty Queue");
    } else {
      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 q = new Queue();

    // deQueue is not possible on empty queue
    q.deQueue();

    // enQueue 5 elements
    q.enQueue(1);
    q.enQueue(2);
    q.enQueue(3);
    q.enQueue(4);
    q.enQueue(5);

    // 6th element can't be added to because the queue is full
    q.enQueue(6);

    q.display();

    // deQueue removes element entered first i.e. 1
    q.deQueue();

    // Now we have just 4 elements
    q.display();

  }
}

復雜性分析

使用數組的隊列中入隊和出隊操作的復雜度為O(1)。如果您pop(N)在 python 代碼中使用,那么復雜性可能O(n)取決于要彈出的項目的位置。

隊列的應用

CPU調度、磁盤調度

當兩個進程之間異步傳輸數據時,隊列用于同步。例如:IO Buffers、管道、文件IO等

處理實時系統(tǒng)中的中斷。

呼叫中心電話系統(tǒng)使用隊列將呼叫他們的人按順序排列。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 人人艹在线视频 | 特级夫妻大片免费在线播放 | 视频一区二区三区在线观看 | 国产精品成人h片在线 | 午夜视频18 | 欧美亚洲国产一区二区三区 | 五月综合在线 | 你懂得在线视频 | 麻豆视传媒短视频网站-欢迎您 | 欧美第一页在线 | 欧美色久| 我想看黄色毛片 | 日韩精品1| 在线看片一区 | 播放一级黄色片 | 成人网免费观看 | 亚洲黄色免费网址 | 精品一区二区三区中文字幕 | 一级黄色片在线播放 | 亚洲综合小视频 | aaaa欧美高清免费 | 亚洲欧美日韩综合在线播放 | 高清不卡毛片免费观看 | 成人影片在线播放 | 九九99久久精品午夜剧场免费 | 欧美成人免费xxx大片 | 午夜国产精品视频 | 日韩资源站 | 欧美福利网站 | 一级一级一片在线观看 | 亚洲一区 在线播放 | 欧美一区二区三区综合色视频 | 国产成人欧美 | 亚洲系列中文字幕一区二区 | 欧美视频在线观看一区二区 | 亚洲欧美影院 | 日韩成人毛片高清视频免费看 | 91短视频黄 | 国产成人精品18 | 男人把女人下部桶爽的视频 | 国产白丝在线观看 |