1. 程式人生 > >資料結構—佇列

資料結構—佇列

佇列概念 

只允許在一端進行插入資料操作,在另一端進行刪除資料操作的一種特殊線性表,進行插入操作的一端稱為隊尾(入佇列),進行刪除操作的一端稱為隊頭(出佇列)

佇列具有先進先出的特徵

順序佇列

 型別一:隊頭不動,出佇列時隊頭後所有元素向前移動

缺陷:如果出佇列操作很多,要搬移大量元素

型別二:隊頭移動,出佇列時隊頭向後移動一個位置

如果再有F、G進行入隊操作,就會出現假溢位問題

缺陷:容易造成佇列假溢位

假溢位:順序佇列因多次入佇列和出佇列操作後出現的尚有儲存空間但不 能再進行入佇列操作的溢位

真溢位::順序佇列最大儲存空間已經存滿而又要求進行入佇列操作所引起 的溢位

迴圈佇列

將頭尾相接的順序儲存佇列稱為迴圈佇列,迴圈佇列可以解決假溢位現象

迴圈佇列如何判斷佇列空和滿呢?

  1. 少用一個儲存單元
  2. 設定一個標記位
  3. 設定一個計數器

鏈式佇列

特殊的單鏈表,只在單鏈表上進行頭刪和尾插操作

優先順序佇列

帶有優先順序的佇列稱為優先順序佇列  

佇列具有先進先出的特性,即最先進入佇列的元素將被最先出佇列

有時也需要把進入佇列中的元素分優先順序(比如執行緒排程),出佇列時首先選擇優先順序最高的元素出佇列(優先順序高先被服務VIP),對於優先順序相同的 元素則按照先進先出的原則出佇列,即優先順序佇列的出佇列操作不是直接將隊頭元素出佇列,而是把佇列中優 先級最高的元素出佇列