鏈棧的操作

2021-07-03 14:59:43 字數 1463 閱讀 4541

順序棧的實現依靠陣列,而陣列需要事先宣告長度,一次性地靜態地分配記憶體空間。這樣就給我們帶來很多不便。因為我們事先並不能精確地估計棧所需的大小,估計大了浪費空間,估計小了後果就嚴重了,導致程式無法正常執行。所以我們通常使用鏈棧這種資料結構。

鏈棧用鍊錶作為儲存結構,棧初始化時僅需給棧頂指標分配記憶體空間,而後每當有資料入棧時再為該資料分配空間,這樣實現了記憶體空間的動態分配。理論上棧的大小可以是無限大的(小心撐爆你的記憶體)。不存在順序棧的諸多問題。

鏈棧將棧頂top看作頭結點,鏈棧的建立就是頭插法建立鍊錶

程式實現:依次把0-9壓棧,再依次出棧並列印。

#include #include #include /*** 鏈棧:相當於頭插法的鍊錶 ***/

#if 0

typedef int elementtype;

typedef struct node stacknode, *linkstack;

void initstack(linkstack top)

int isempty(linkstack top)

int push(linkstack top, elementtype element)

int pop(linkstack top, elementtype *element)

void gettop(linkstack top, elementtype *element)

void main()

int ivalue;

while (!isempty(s))

system("pause");

return;

}#endif

/* 鏈棧的初始化、出棧、入棧、取頂元素、判斷棧頂是否為空 */

typedef int elemtype;

typedef struct linkstack

lstack;

/* 鏈棧的初始化 */

void initstack(lstack *top)

/* 棧是否為空 */

bool isempty(lstack *top)

/* 取鏈棧棧頂元素 */

int gottop(lstack *top, elemtype &value)

else exit(1);

}bool push(lstack *top, elemtype &value)

void pop(lstack *top)

else }

int main()

printf("輸出鏈棧元素 !\n");

棧操作之棧鏈

資料結構 棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂 top 另一端為棧底 bottom 棧底固定,而棧頂浮動 棧中元素個數為零時稱為空棧。插入一般稱為進棧 push 刪除則稱為退棧 pop 棧也稱為後進先出表。作業系統 由編譯器自動分配釋放 存放函式的引數...

鏈棧的基本操作

初始化乙個資料元素為整形的鏈棧,並實現進棧 出棧 獲得棧頂元素等操作。通過控制台將1,2,3,4,5進棧,出棧兩次,獲得棧頂元素並輸出,6進棧,列印棧內的所有內容。include include define maxsize 100 define ok 1 define error 0 using ...

鏈棧的基本操作

鏈棧,即用鍊錶實現棧儲存結構。鏈棧的實現思路同順序棧類似,順序棧是將數順序表 陣列 的一端作為棧底,另一端為棧頂 鏈棧也如此,通常我們將鍊錶的頭部作為棧頂,尾部作為棧底,如圖 1 所示 圖 1 鏈棧示意圖 將鍊錶頭部作為棧頂的一端,可以避免在實現資料 入棧 和 出棧 操作時做大量遍歷鍊錶的耗時操作。...