棧的順序表示
利用一組位址連續的儲存單元依次存放自棧底到棧頂的資料元素。棧底一般在低位址端。
但是,為了方便操作,通常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...