資料結構—佇列
阿新 • • 發佈:2018-12-11
佇列概念
只允許在一端進行插入資料操作,在另一端進行刪除資料操作的一種特殊線性表,進行插入操作的一端稱為隊尾(入佇列),進行刪除操作的一端稱為隊頭(出佇列)
佇列具有先進先出的特徵
順序佇列
型別一:隊頭不動,出佇列時隊頭後所有元素向前移動
缺陷:如果出佇列操作很多,要搬移大量元素
型別二:隊頭移動,出佇列時隊頭向後移動一個位置
如果再有F、G進行入隊操作,就會出現假溢位問題
缺陷:容易造成佇列假溢位
假溢位:順序佇列因多次入佇列和出佇列操作後出現的尚有儲存空間但不 能再進行入佇列操作的溢位
真溢位::順序佇列最大儲存空間已經存滿而又要求進行入佇列操作所引起 的溢位
迴圈佇列
將頭尾相接的順序儲存佇列稱為迴圈佇列,迴圈佇列可以解決假溢位現象
迴圈佇列如何判斷佇列空和滿呢?
- 少用一個儲存單元
- 設定一個標記位
- 設定一個計數器
鏈式佇列
特殊的單鏈表,只在單鏈表上進行頭刪和尾插操作
優先順序佇列
帶有優先順序的佇列稱為優先順序佇列
佇列具有先進先出的特性,即最先進入佇列的元素將被最先出佇列
有時也需要把進入佇列中的元素分優先順序(比如執行緒排程),出佇列時首先選擇優先順序最高的元素出佇列(優先順序高先被服務VIP),對於優先順序相同的 元素則按照先進先出的原則出佇列,即優先順序佇列的出佇列操作不是直接將隊頭元素出佇列,而是把佇列中優 先級最高的元素出佇列