資料結構之線性表 十二 棧 2 順序棧

2021-09-25 14:21:11 字數 1091 閱讀 5460

棧的順序表示

利用一組位址連續的儲存單元依次存放自棧底到棧頂的資料元素。棧底一般在低位址端。

但是,為了方便操作,通常top指示的是棧頂元素之上的下標位址。如下圖,

例子:

建立乙個棧,其stacksize=4,以此為例對順序棧做一些說明。

使用陣列作為順序棧儲存方式的特點:簡單、方便、但易產生溢位(陣列的大小固定)

上溢是一種錯誤,使問題的處理無法進行;而下溢一般認為是一種結束條件,即問題處理結束。

棧的具體型別定義:

上圖指標相減的結果是陣列元素相差的個數,能這樣操作的前提是兩個指標必須指向同乙個陣列。

順序棧的實現

status initstack(sqstack& s)

status stackempty(sqstack s)

int stacklength(sqstack s)

status clearstack(sqstack s)

status destroystack(sqstack &s)

return ok;

}

status push(sqstack& s, selemtype e)

status pop(sqstack& s, selemtype e)

資料結構之線性表 棧的順序儲存

1 棧的基本概念 需要說明的是,棧也是乙個線性表,也就是說棧元素具有線性關係。只不過它是一種特殊的線性表而已。它的特殊之處在於限制了線性表插入和刪除的位置,他始終只在棧定進行插入刪除操作。這也就使得 棧底是固定的,最先進棧的只能在棧底,只能最後乙個出棧。具體描述如下圖所示 2棧的常用操作以及具體實現...

線性表(二) 棧之順序棧

一 定義棧的基類 棧的基類 template class stack 判斷棧是否為空 virtual bool empty 0 棧中元素的大小 virtual size t size 0 獲取棧頂元素 virtual t top 0 彈出棧頂元素 virtual t pop 0 入棧 virtual...

資料結構 線性表 順序棧的操作

如下 include include define maxsize 50 使用陣列實現棧的結構 typedef int elemtype typedef struct stacksqstack 初始化棧 void initstack sqstack s 判斷棧空 bool stackempty sq...