第3章 棧、隊列和數組
- 3.1 棧
- 3.2 隊列
- 3.3 棧與隊列的應用
- 3.4 數組和特殊矩陣
3.1 棧(1 10 11 20)
3.2 隊列(6 12 14 17)
3.3 棧與隊列的應用(6 11)
3.4 數組和特殊矩陣
3.1 棧
- T1
棧和隊列具有相同的邏輯結構(線性結構)
棧和隊列的ADT不同,先進后出和先進先出的關系,基本操作集也不同。 - T11
- 出棧序列的個數:
- T20
共享棧:棧頂對棧頂組合,若某一棧滿,可利用另一個棧存儲。
共享棧的好處:節省存儲空間,降低上溢出的可能
3.2 隊列
- T12
鏈式存儲隊列,刪除元素時,頭尾指針都可能需要更改。
通常刪除只需修改頭指針,但若刪除的是最后一個元素,直接修改尾指針rear=front。
(鏈隊列中,front指向頭結點,即隊頭元素的前一個)
3.3 棧與隊列的應用
- T6
遞歸通常比非遞歸效率低,因為遞歸在計算機實際執行過程中包含了很多重復的計算。 - T9
消除遞歸的方法:
1)人工模擬系統堆棧(遞歸的本質也是棧)
2)對于單向遞歸和尾遞歸,可以用迭代
循環:循環通常關注于重復執行一組指令直到特定條件為止,它可能不需要考慮前一次迭代的結果。
迭代:迭代更注重于逐步處理數據集或序列,每次迭代都可能基于上一次迭代的結果。 - T11
表達式求值的棧(兩個易錯點):
1)左括號進棧,右括號不進棧
2)遇操作符,先比較棧頂優先級,而不是入棧