1.棧的概念
棧是一種特殊的線性表,只能在一端進行插入和刪除。簡稱lifo
2.棧的應用舉例
3.順序棧棧表示和操作的實現
由於棧本身就是線性表,於是棧也有順序儲存和鏈式儲存兩種實現方式
採用順序儲存對的棧稱為順序棧,它利用一組位址連續的儲存單元存放自棧底到棧頂的資料元素,同時附設乙個指標(top)指示真正棧頂元素之上的下表位址。
typedef
struct
sqstack;
3.1初始化棧status initstack
(sqstack &s)
3.2判斷順序棧是否為空status stackempty
(sqstack s)
3.3求順序棧的長度status getstacklength
(sqstack s)
3.4清空順序棧status clearstack
(sqstack &s)
3.5銷毀順序棧status destorystack
(sqstack &s)
return ok;
}
3.6順序棧入棧status push
(sqstack &s,selemtype e)
3.7順序棧出棧status pop
(sqstack &s,selemtype &e)
3.7讀取棧頂元素
當棧非空時此操作返回當前棧頂元素的值,棧頂指標保持不變
selemtype gettop
(sqstack s)
}
4.鏈棧表示和操作的實現
採用鏈式儲存的棧稱為鏈棧。通常鏈棧用單鏈表來表示。即鏈棧是運算受限的單鏈表,只能在鍊錶頭部進行。
4.1鏈棧的儲存結構
typedef
struct stacknodestacknode,
*linkstack;
4.2鏈棧的初始化status initstack
(linkstack &s)
4.3判斷鏈棧是否為空status stackempty
(linkstack s)
4.4鏈棧的入棧status push
(linkstack &s,selemtype e)
4.5鏈棧的出棧status pop
(linkstack &s,selemtype &e)
4.6鏈棧的取棧頂元素selemtype getelem
(linkstack s)
}
第三章 棧和佇列
棧和佇列 一 棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何資料元素的棧稱為空棧。2 在任何時候出棧的元素都只能是棧頂元素,即最後最後入棧者最先出棧。所以棧中元素除了具有線性關係外,還具有後進先出的特性。3 棧的抽象資料型別定義 ...
第三章 棧和佇列
棧和佇列是兩種常用的資料結構,同時又是操作受限的線性表,也是兩種重要的抽象資料型別。1 1棧是限定僅在表尾進行插入和刪除操作的線性表。棧中元素具有線性關係和後進先出的特性。2雖然對插入和刪除操作的位置限制減少了棧的靈活性,但同時也使得棧的操作更有效更容易實現。3棧的儲存結構分兩種,一種是順序儲存結構...
第三章 棧和佇列
第三章棧和佇列 一 棧1.棧 限定僅在表尾進行插入和刪除操作的線性表 允許插入和刪除的一端稱為棧頂 另一端稱為棧底 2.空棧 不含任何資料元素的棧。3.在任何時候出棧的元素都只能是棧頂元素,即最後入棧者最先出棧,具有後進先出的特性。4.棧的抽象資料型別定義 1 push 輸入 元素值 x 輸出 如果...