資料結構(五) 鏈棧

2021-09-29 21:36:10 字數 961 閱讀 6460

​ 鏈棧是一種特殊的線性鍊錶,使使用鏈式儲存結構的棧,鏈棧也有棧頂棧底,同樣是一種後進先出(lifo)的資料結構

​ 鏈棧需要定義兩個結構體,linkstacknode 用來定義鏈棧節點的型別,存放節點的資料和下一節點的 next 指標

​ linkstack 結構體用來定義鏈棧的結構,存放 top 棧頂指標和鏈棧的總長度

typedef struct linkstacknode linkstacknode;

typedef struct linkstack linkstack;

​ 建立鏈棧的過程就是定義 linkstack 變數並為其分配記憶體,再讓棧頂指標指空,棧的長度歸 0

linkstack * createstack()
int isempty(linkstack *p)
​ 因為棧的本質是一種**先出的資料結構,所以所有的操作都要在棧頂進行。入棧操作即定義新的 linkstacknode 並為其分配記憶體,給他的資料域賦值,使新節點的 next 指向原棧頂處的節點,在使新入節點成為新的棧頂結點,棧的長度 +1

linkstack *pushstack(linkstack *p, int d)
​ 出棧需要先判斷棧是否為空,再將棧頂指標指向原棧頂節點的 next,釋放原棧頂節點的記憶體,棧的長度 -1

linkstack *popstack(linkstack *p) 

else

}

​ 列印棧同樣先檢測棧是否為空,然後在遍歷棧的同時列印每個節點的資料

int showstack(linkstack *p) 

while (temp != null)

cout << endl;

return 0;

}

資料結構 棧 鏈棧

棧的插入和刪除只在棧頂進行操作,在單鏈表中,頭指標是單鏈表的必須元素 而在棧中,棧頂指標也是鏈棧的必須元素,且一般將棧頂放在單鏈表的頭部。線性表有順序儲存結構和鏈式儲存結構,棧屬於線性表的一種,也具有順序儲存結構和鏈式儲存結構。對於棧的鏈式儲存結構,一般稱之為鏈棧。棧的特點 先進後出 棧函式實現 1...

資料結構 鏈棧

編寫乙個程式,實現鏈棧 假設棧中元素型別為char 的各種基本運算。並完成下面功能 1 初始化鏈棧s 2 判斷鏈棧s是否非空 3 依次進鏈棧元素a,b,c,d,e 4 判斷鏈棧s是否非空 5 輸出鏈棧長度 6 輸出從棧頂到棧底元素 7 輸出出鏈棧序列 8 判斷鏈棧s是否非空 9 釋放鏈棧。inclu...

資料結構 鏈棧

鏈式儲存的棧稱為鏈棧,結構如下圖 鏈棧無滿棧問題,空間可擴充,但有棧空問題,棧空的條件為top next null。進棧與入棧僅在棧頂進行,鏈式棧的棧頂在棧表頭。鏈棧的定義如下 struct stacknode class stack 建立頭結點 stack void push int item 入...