資料結構基礎第4講

蠲忿恚葉言發表於2024-04-23

資料結構基礎第4講 佇列

內容

img

考點一: 佇列概念

程式碼不考

1.佇列的定義

img

img

考點二:順序佇列的定義

img

考點三順序佇列的性質與操作

4要素:

img

考點四:迴圈佇列的定義

由於順序佇列會存在假溢位問題,引入迴圈佇列。

假溢位:

img

描述:

img

考點五:迴圈佇列的操作

  1. 判斷空滿:

    img

  2. 性質:
    考頻75%
    img

    元素個數求法:

    1. rear < front

      img

      f-r 為空的個數

      元素個數為:

      \([n-(f-r)] \% n = (r-f+n) \% n\)

    2. rear > front

      img

      \(r-f\) 為元素個數

      元素個數為:

      \((r-f)\%n\)

    為了形式統一將情況二寫成:

    \(\begin{matrix} (r-f)\%n &=(r-f) \%n + n \%n \\ &=(r-f+n)\%n \end{matrix}\)

  3. 環形佇列實現的三種方式

    1. 隊首指標始終指向隊頭元素,隊尾指標始終指向隊尾元素的下一個位置

      img

      img

    2. 隊首指標始終指向隊頭元素的前一個位置,隊尾指標始終指向隊尾元素

      img

      img

    3. 隊首指標始終指向隊頭元素,隊尾指標始終指向隊尾元素[需要加入len表示元素個數]

      img

      • 初始化 f=0;rear = MaxSize-1

      img

      空 ;\((r+1)\%==front\)

      滿:\((r+1)\%MaxSize\)

    例題4:

    img

    例題5:

    img

    img

    屬於第二種情況

    • 元素個數:\(len=(rear-front+QueueSize)\%QueueSize\)
    • 由於
    • \[len=QueueSize-1<QueueSize \]

    • 所以
    • \[len\%QueueSize=len \]

    • 將上式子帶入元素個數得
    • \[\begin{align} len\%QS &= (r-f+QS)\%QS \\ &= r\%QS-f\%QS+QS\%QS \end{align} \]

    • \[\begin{align}f\%QS&=f\\&=(r-len+QS)\%QS\end{align} \]

若題目未明確是第幾種,按第一或第二考慮

考點七:鏈佇列的定義

img

  1. 入隊出隊:

img

  1. 鏈隊的4要素:

img

  1. 實現佇列的方式

    • 分別給出頭尾指標 最佳方案
    • 單連結串列:帶尾指標的單迴圈連結串列
    • 雙連結串列:給頭指標或尾指標的雙迴圈連結串列

考點八:鏈佇列的操作

  1. 初始化

    img

  2. 銷燬

    img

  3. 判空

    img

  4. 進隊

    考慮情況:

    • 原佇列為空
    • 原佇列非空

    img

  5. 出隊

    考慮情況:

    • 原佇列為空
    • 原佇列只有一格節點
    • 其他情況

    img

    \(\divideontimes\)不管啥題就選 隊首/隊尾均可以

考點九:雙端佇列

輸出受限:

img

輸入受限:

img

相關文章