資料結構基礎第4講 佇列
內容
考點一: 佇列概念
程式碼不考
1.佇列的定義
考點二:順序佇列的定義
考點三順序佇列的性質與操作
4要素:
考點四:迴圈佇列的定義
由於順序佇列會存在假溢位問題,引入迴圈佇列。
假溢位:
描述:
考點五:迴圈佇列的操作
-
判斷空滿:
-
性質:
考頻75%
元素個數求法:
-
rear < front
f-r 為空的個數
元素個數為:
\([n-(f-r)] \% n = (r-f+n) \% n\)
-
rear > front
\(r-f\) 為元素個數
元素個數為:
\((r-f)\%n\)
為了形式統一將情況二寫成:
\(\begin{matrix} (r-f)\%n &=(r-f) \%n + n \%n \\ &=(r-f+n)\%n \end{matrix}\)
-
-
環形佇列實現的三種方式
-
隊首指標始終指向隊頭元素,隊尾指標始終指向隊尾元素的下一個位置
-
隊首指標始終指向隊頭元素的前一個位置,隊尾指標始終指向隊尾元素
-
隊首指標始終指向隊頭元素,隊尾指標始終指向隊尾元素[需要加入len表示元素個數]
- 初始化 f=0;rear = MaxSize-1
空 ;\((r+1)\%==front\)
滿:\((r+1)\%MaxSize\)
例題4:
例題5:
屬於第二種情況
- 元素個數:\(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} \]
-
若題目未明確是第幾種,按第一或第二考慮
考點七:鏈佇列的定義
- 入隊出隊:
- 鏈隊的4要素:
-
實現佇列的方式
- 分別給出頭尾指標 最佳方案
- 單連結串列:帶尾指標的單迴圈連結串列
- 雙連結串列:給頭指標或尾指標的雙迴圈連結串列
考點八:鏈佇列的操作
-
初始化
-
銷燬
-
判空
-
進隊
考慮情況:
- 原佇列為空
- 原佇列非空
-
出隊
考慮情況:
- 原佇列為空
- 原佇列只有一格節點
- 其他情況
\(\divideontimes\)不管啥題就選 隊首/隊尾均可以
考點九:雙端佇列
輸出受限:
輸入受限: