為什麼優先佇列不能像普通佇列那樣迴圈?
介紹
佇列是一種抽象資料型別,它從後端插入元素,從前端移除元素。佇列有三種類型:簡單佇列、優先佇列和迴圈佇列。在本教程中,我們將瞭解為什麼優先佇列不能迴圈以及原因。
優先佇列
這是一種獨特的佇列,它不基於佇列操作的FIFO原則。是什麼讓它獨一無二?它是元素的優先順序,用於移除或出隊。優先佇列的每個元素都有一定的優先順序,它們根據優先順序被移除。
優先順序最高的元素首先從佇列中移除。當兩個佇列元素具有相同的優先順序時,它們將按照FIFO原則移除。
優先佇列是使用陣列、連結串列、堆或二叉樹實現的。優先佇列有兩種型別:最小優先佇列和最大優先佇列。
佇列
資料結構中的普通佇列類似於現實生活中的佇列。它可以使用陣列和連結串列實現。對於陣列佇列的實現,您必須預先定義佇列的大小,這會導致記憶體浪費。當使用陣列實現簡單佇列時,尾端之前的一些空間將保持未使用。
迴圈:含義
為了克服普通佇列中記憶體浪費的問題。透過在前端和尾端之間形成迴圈來包裝佇列。生成的佇列稱為迴圈佇列。
透過迴圈,如果在達到佇列的最大大小後插入元素,它將很容易插入。
在迴圈概念之前,在達到最大佇列大小後新增元素時,Java中的佇列將丟擲異常。在多次插入和刪除佇列元素後,你會發現,在某一點上,尾端將在前端下方。這是因為迴圈。
為什麼優先佇列不能迴圈?
可以使用帶有迴圈邏輯的優先佇列,但這會降低其效能。
優先佇列最有效的實現是二叉樹。二叉樹對前端和尾端的迴圈沒有影響。
優先佇列沒有定義不同的佇列操作,它用於使用陣列、連結串列或二叉樹的實現。
普通佇列的迴圈會產生環形緩衝區,而優先佇列可以透過多種方式實現。
優先佇列具有比迴圈更多的其他功能,它定義了佇列和堆疊。
結論
優先佇列是一個有序佇列,它移除優先順序最高的資料。有多種實現方法,最常用的是二叉樹。迴圈實現用於普通佇列。
普通佇列是無序的,其元素按照FIFO順序移除。它有兩個端點:尾端和前端。它用於流量處理、CPU排程或管理播放列表。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP