棧的鏈式儲存結構及實現

2021-09-24 01:29:40 字數 711 閱讀 9815

棧的鏈式儲存結構,簡稱為鏈棧,如圖所示:

對於鏈棧來說,基本不存在棧滿的情況,除非記憶體以沒有儲存空間。

鏈棧的結構**如下:

typedef struct stacknode

stacknode, *linkstackptr;

typedef struct linkstack

linkstack;

鏈棧的操作和普通的單鏈表類似,僅在插入和刪除操作上不同。

對於鏈棧的的進棧push操作,**如下:

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

status push(linkstack *s, selemtype e)

至於鏈棧的出棧pop操作,也是三個步驟。假設變數p用來儲存要刪除的棧頂結點,將棧頂指標下移一位,最後釋放p即可。

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

status pop(linkstack *s, selemtype *e)

如果棧在使用過程中元素變化不可預料,可能會有很多個,可能又比較少,那麼推薦使用鏈棧;反之,如果變化範圍可控,那麼使用順序棧會好一些。

棧的鏈式儲存結構及實現

今天學習棧的鏈式儲存結構。鏈式儲存結構最大的好處就是沒有空間的限制,通過指標指向將結點像乙個鍊子一樣把結點鏈結,那麼棧的同樣可以用於鏈式儲存結構。棧的鏈式儲存結構,簡稱為鏈棧。想想看,棧只是棧頂來做插入和刪除操作,棧頂放在鍊錶的頭部還是尾部呢?由於單鏈表有頭指標,而棧頂指標也是必須的,那麼幹嘛不讓他...

4 1 1 棧的鏈式儲存結構及實現

棧的鏈式儲存結構,簡稱為鏈棧。由於單鏈表有頭指標,而棧頂指標也是必須的,所以把棧頂放在單鏈表的頭部。另外,因為有了棧頂在頭部了,所以單鏈表中比較常用的頭結點也就失去了意義,通常對於鍊錶來說,是不需要頭結點的。鏈棧的結構 typedef struct stacknode stacknode,links...

棧的順序儲存實現及鏈式儲存實現

include include define size 100 typedef int elemtype typedef struct stackstack void init stack s 初始化 intpush stack s,elemtype e 入棧 s s s top e 從s 1 開始...