3 4棧的鏈式實現

2021-10-06 06:10:55 字數 756 閱讀 8570

鏈棧即採用鍊錶作為儲存結構實現的棧。

為便於操作,這裡採用帶頭結點的單鏈表實現棧。由於棧的插入和刪除操作僅限制在表頭位置進行,所以鍊錶的表頭指標就作為棧頂指標,如下圖所示。

在上圖中,top 為棧頂指標,始終指向當前棧頂元素前面的頭結點。

若 top->next=null, 則代表棧空。採用鏈棧不必預先估計棧的最大容量,只要系統有可用空間,鏈棧就不會出現 溢位。採用鏈棧時,棧的各種基本操作的實現與單鏈表的操作類似,對於鏈棧,在使用完畢 時,應該釋放其空間。

鏈棧的結構可用 c 語言定義如下:

typedef

struct node

linkstacknode;

typedef linkstacknode *linkstack;

鏈棧的初始化及其他操作比較簡單,這裡不再討論。僅給出進棧、出棧等最主要的運算實現。

int

push

(linkstack top, stackelementtype x)

/* 將資料元素 x 壓入棧 top 中 */

int

pop(linkstack top, stackelementtype *x)

棧 鏈式棧的實現

一 2 對於棧而言,通常允許插入 刪除操作的一端被稱為棧頂 top 另一端被稱為棧底 buttom 3 從棧頂壓入元素稱為進棧 push 4 從棧頂刪除元素稱為出棧 pop 棧是一種先進後出的線性表.二 可以採用單鏈表來儲存棧中的所有元素,這種結構的棧被稱為鏈棧。對於鏈棧而言,棧頂元素不斷改變,程式...

鏈式棧的實現

棧相比於鍊錶,它是一種特殊的資料模型,兩者既有聯絡 通過鍊錶的api函式可以改造出棧的api函式,這其中的原因在於兩者的底層邏輯是有相似的地方的,即 通過在鍊錶的頭部操作元素,就可以模擬出棧 區別在於,鍊錶和棧之間的對變數生命週期的管理不一樣 在實現棧的過程中,我們不可避免的用到了鍊錶的api函式 ...

實現鏈式棧

棧作為一種資料結構,它按照後進先出的原則儲存資料,只能在棧頂進行插入和刪除操作的特殊線性表。按照儲存方式不同,棧可以分為順序棧和鏈式棧。實現鏈式棧需要注意 1 採用鍊錶儲存結構 2 不需要預定義記憶體空間,不存在 鏈式棧滿 這種情況 3 解決了順序棧中沒有合理分配記憶體大小的難題。以下為具體實現 在...