棧 鏈式儲存結構

2021-09-26 14:27:45 字數 1114 閱讀 2271

講完了棧的順序儲存結構,現在來看棧的鏈式儲存結構,簡稱為鏈棧。

想想看,棧只是棧頂來做插入和刪除操作,棧頂放在鍊錶的頭部還是尾部?

由於單鏈表有頭指標,而棧頂指標也是必須的,所以比較好的辦法是把棧頂放在單鏈表的頭部。

都已經有了棧頂在頭部了,單鏈表中常用的頭結點也就失去了意義,通常對於鏈棧來說,是不需要頭結點的。

/* 鏈棧結構 */

typedef

struct stacknode

stacknode,

*linkstackptr;

typedef

struct

linkstack;

鏈棧的操作絕大部分都和單鏈表相似,只是在插入刪除上,特殊一些。

對於空棧,鍊錶原定義是頭指標指向空

那麼,鏈棧的空其實就是top=null的時候

假設,元素值為 e 的新結點是 s,top為棧頂指標,示意圖如下:

/* 插入元素e為新的棧頂元素 */

status push

(linkstack *s,selemtype e)

鏈棧的出棧操作,也是很簡單的三句操作,假設變數 p 用來儲存要刪除的棧頂結點,將棧頂指標下移一位,最後釋放 p 即可。

/* 若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error */

status pop

(linkstack *s,selemtype *e)

以上是對《大話資料結構》做的筆記!

棧(鏈式儲存結構)

通常由乙個一維陣列和乙個棧頂元素變數組成 如下 define maxsize struct stacknode struct stacknode createstack void push struct stacknode s,elementtype x elementtype pop struct...

鏈式儲存mysql 鏈棧 棧的鏈式儲存結構

前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...

棧的鏈式儲存結構

棧的鏈式表示,即鏈棧。由於棧的操作是線性表操作的特例,因此鏈棧可以看成運算受限的單鏈表。其特點如下 鏈棧無棧滿問題,空間可擴充 插入和刪除僅在棧頂處執行 鏈式棧的棧頂在鏈頭 適合於多棧操作。stacklist.h include class listint int data listint link...