第三章棧和佇列的知識體系

2021-10-10 12:35:47 字數 1557 閱讀 7717

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 輸出 如果...