佇列是一種線性資料結構。佇列只允許在表的前端進行刪除操作,而在表的後端進行插入操作,和堆疊一樣,佇列是一種操作受限的線性表;其進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。
本文操作環境:windows10系統、thinkpad t480電腦。
佇列是一種線性資料結構。
佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和堆疊一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。
佇列的資料元素又稱為佇列元素。在佇列中插入一個佇列元素稱為入隊,從佇列中刪除一個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能先從佇列中刪除,故佇列又稱為先進先出(FIFO—first in first out)線性表。
順序佇列
建立順序佇列結構必須為其靜態分配或動態申請一片連續的儲存空間,並設定兩個指標來管理。一個是隊頭指針front,它指向隊頭元素;另一個是隊尾指針rear,它指向下一個入隊元素的存儲位置,如圖所示
每次在隊尾插入一個元素是,rear增1;每次在隊頭刪除一個元素時,front增1。隨著插入和刪除操作的進行,佇列元素的數量不斷變化,佇列所佔的儲存空間也在為佇列結構所指派的連續空間中移動。當front=rear時,隊列中沒有任何元素,稱為空隊列。當rear增加到指向分配的連續空間之外時,佇列無法再插入新元素,但這時往往還有大量可用空間未被佔用,這些空間是已經出隊的隊列元素曾經佔用過得儲存單元。
順序佇列中的溢出現象:
(1) "下溢"現象:當佇列為空時,做出隊運算產生的溢位現象。 「下溢」是正常現象,常用作程序控制轉移的條件。
(2)"真上溢"現象:當佇列滿時,做進棧運算產生空間溢位的現象。 「真上溢」是一種出錯狀態,應設法避免。
(3)"假上溢"現象:由於入隊和出隊操作中,頭尾指針只增加不減小,致使被刪元素的空間永遠無法重新利用。當佇列中實際的元素個數遠小於向量空間的規模時,也可能由於尾指標已超越向量空間的上界而不能做入隊操作。此現象稱為"假上溢"現象。
循環佇列
在實際使用佇列時,為了使佇列空間能重複使用,往往會對佇列的使用方法稍加改進:無論插入或刪除,一旦rear指針增1或front指針增1 時超出了所分配的隊列空間,就讓它指向這片連續空間的起始位置。自己真從MaxSize-1增1變到0,可用取餘運算rear%MaxSize和front%MaxSize來實現。這其實是把佇列空間想像成一個環形空間,環形空間中的儲存單元循環使用,用這種方法管理的佇列也稱為循環佇列。除了一些簡單應用之外,真正實用的隊列是循環隊列。
在循環隊列中,當隊列為空時,有front=rear,而當所有隊列空間全佔滿時,也有front=rear。為了區別這兩種情況,規定循環佇列最多只能有MaxSize-1個佇列元素,當循環佇列只剩下一個空儲存單元時,佇列就已經滿了。因此,隊列判空的條件時front=rear,而隊列判滿的條件時front=(rear 1)%MaxSize。隊空與隊滿的情況如圖:
推薦:《程式設計影片》
以上是隊列是一種什麼資料結構的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver Mac版
視覺化網頁開發工具