1. 程式人生 > >鏈式儲存結構(棧)

鏈式儲存結構(棧)

S1棧的定義
1)棧(Stack)是限制僅在表的一端進行插入和刪除運算的線性表。
2)通常稱插入,刪除的這一端稱為棧頂(top),另一端稱為棧底(button)。
3)當表中沒有元素時稱為空棧。
4)棧為後進先出(Last In First Out)的線性表,簡稱:LIFO表。
5)棧的修改是按後進先出的原則進行。每次刪除(退棧)的總是當前棧中"最新"的元素,即最後插入(進棧)的元素,
而最先插入的是被放在棧的底部,要到最後才能刪除。



S2棧的基本運算
1)InitStack(S):構建一個空棧。
2)StackEmpty(S):判斷棧空。若S為空棧,則返回TRUE,否則返回FALSE。
3)StackFull(S):判斷棧滿。若S為滿棧,則返回TRUE,否則返回FALSE。
注意:該運算時適用於棧的順序儲存結構。

4)Push(S,data):入棧。若棧S不滿,則將元素data插入S的棧頂。
5)Pop(S):出棧。若棧S非空,則將S的棧頂元素刪去,並返回該元素。
6)StackTop(S):取棧頂元素。若棧S非空,則返回棧頂元素,但不改變棧的狀態。

S3棧的應用
1)函式呼叫。
2)中斷。
3)表示式求值。
4)記憶體分配。
5)緩衝處理。
6)迷宮。

S4鏈式棧示意圖


S5棧鏈式儲存的部分程式碼