為什麼優先佇列不能像普通佇列那樣迴圈?


介紹

佇列是一種抽象資料型別,它從後端插入元素,從前端移除元素。佇列有三種類型:簡單佇列、優先佇列和迴圈佇列。在本教程中,我們將瞭解為什麼優先佇列不能迴圈以及原因。

優先佇列

這是一種獨特的佇列,它不基於佇列操作的FIFO原則。是什麼讓它獨一無二?它是元素的優先順序,用於移除或出隊。優先佇列的每個元素都有一定的優先順序,它們根據優先順序被移除。

優先順序最高的元素首先從佇列中移除。當兩個佇列元素具有相同的優先順序時,它們將按照FIFO原則移除。

優先佇列是使用陣列、連結串列、堆或二叉樹實現的。優先佇列有兩種型別:最小優先佇列和最大優先佇列。

佇列

資料結構中的普通佇列類似於現實生活中的佇列。它可以使用陣列和連結串列實現。對於陣列佇列的實現,您必須預先定義佇列的大小,這會導致記憶體浪費。當使用陣列實現簡單佇列時,尾端之前的一些空間將保持未使用。

迴圈:含義

為了克服普通佇列中記憶體浪費的問題。透過在前端和尾端之間形成迴圈來包裝佇列。生成的佇列稱為迴圈佇列。

透過迴圈,如果在達到佇列的最大大小後插入元素,它將很容易插入。

在迴圈概念之前,在達到最大佇列大小後新增元素時,Java中的佇列將丟擲異常。在多次插入和刪除佇列元素後,你會發現,在某一點上,尾端將在前端下方。這是因為迴圈。

為什麼優先佇列不能迴圈?

可以使用帶有迴圈邏輯的優先佇列,但這會降低其效能。

優先佇列最有效的實現是二叉樹。二叉樹對前端和尾端的迴圈沒有影響。

優先佇列沒有定義不同的佇列操作,它用於使用陣列、連結串列或二叉樹的實現。

普通佇列的迴圈會產生環形緩衝區,而優先佇列可以透過多種方式實現。

優先佇列具有比迴圈更多的其他功能,它定義了佇列和堆疊。

結論

優先佇列是一個有序佇列,它移除優先順序最高的資料。有多種實現方法,最常用的是二叉樹。迴圈實現用於普通佇列。

普通佇列是無序的,其元素按照FIFO順序移除。它有兩個端點:尾端和前端。它用於流量處理、CPU排程或管理播放列表。

更新於:2023年2月22日

274 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.