第四章 棧與佇列
1.棧的定義
定義:棧是隻允許在一端進行插入和刪除操作的線性表。後進先出(LIFO)
棧頂:線性表允許進行插入和刪除的那一端。
棧底:固定的,不允許進行插入和刪除的那一端。
卡特蘭數:n個元素進棧,一共會有C(n,2n)/(n+1)種不同的出棧結果。
2.佇列的定義
定義:佇列也是一種操作受限的線性表,只允許在表的一端進行插入,在表的另一端進行刪除。先進先出(FIFO)
隊頭:允許進行刪除的一端,又稱為隊首。
隊尾:允許進行插入的一端。
3.順序棧的定義及特點
定義:採用順序儲存的棧稱為順序棧,它是利用一組連續的儲存單元存放自棧底到棧頂的資料元素,同時附設一個指標(top)指示當前棧頂元素的位置。
特點:當對棧的最大使用空間估計不足時,有可能會發生棧上溢。
4.鏈式棧的定義及特點
定義:採用鏈式儲存的棧稱為鏈棧。
特點:優點是便於多個棧共享儲存空間和提高其效率,且不存在棧滿上溢的情況。在表頭進行插入和刪除。
5.順序佇列的定義及特點
定義:佇列的順序實現是指分配一塊連續的儲存單元存放佇列中的元素,並附設兩個指標:隊頭指標front指向隊頭元素,隊尾指標rear指向隊尾元素的下一個位置。
特點:連續的儲存單元存放。
6.鏈式佇列的定義及特點
定義:佇列的鏈式表示為鏈佇列,它實際上是一個同時帶有隊頭指標和隊尾指標的單鏈表。頭指標指向隊頭結點,尾指標指向隊尾結點,即單鏈表的最後一個結點。
特點:不存在佇列溢位的情況。
7.棧的應用
(1)棧在括號匹配中的應用
(2)棧在遞迴中的應用
8.佇列的應用
(1)佇列在層次遍歷中的應用
(2)佇列在計算機系統中的應用
考試要求
掌握棧、佇列的邏輯結構,以及基本操作;
掌握順序儲存結構對棧和佇列基本操作的實現;
掌握鏈式儲存結構對棧和佇列基本操作的實現;
掌握順序儲存結構中實現迴圈佇列的具體要求;
理解遞迴呼叫和棧之間的關係;
掌握棧和佇列的經典應用。