線性表6 棧的鏈式儲存(鏈棧)

2021-10-18 19:27:40 字數 1371 閱讀 2732

4.應用——數制轉換

從資料結構角度看,棧和佇列也是線性表,只不過是操作受限的線性表。

棧:只允許在一端進行插入和刪除操作的線性表,允許操作的一端為棧頂,不允許操作的一段稱之為棧底。

棧頂是表尾,棧底是表頭。

後進先出(lifo)

先進後出(filo:first in last out)

儲存:順序儲存、鏈式儲存

描述:陣列+next指標

typedef

int datatype;

typedef

struct node

linkstack;

linkstack *

createlinkstack()

s->data =-1

; s->next =

null

;return s;

}

鏈式儲存無需判滿

int

isempty

(linkstack * s)

入棧是在棧頂,所以採用頭插法

int

pushlinkstack

(linkstack *s, datatype x)

pnew->data = x;

//頭插

pnew->next = s->next;

s->next = pnew;

return0;

}

入棧和出棧的位置一樣,都固定在頭部結點

int

poplinkstack

(linkstack * s, datatype * x)

//2.出頭結點後面的那個結點

linkstack * p = s->next;

s->next = p->next;

*x = p->data;

free

(p);

p =null

;return0;

}

將十進位制123轉換為二進位制

unsigned

int i =

123;

datatype x;

linkstack * s =

createlinkstack()

;if(null

== s)

//入棧

while

(i)//出棧

while(!

isempty

(s))

printf

("\n"

);

線性表之棧的鏈式儲存實現

棧的鏈式儲存也稱為鏈棧,和鍊錶的儲存原理一樣,都可以通閒散空間來儲存元素,用指標來建立各節點之間的邏輯關係。同順序棧,鍊錶的插入,刪除操作也只能在棧頂進行。鏈棧的c語言實現 codeblocks完美執行 include include typedef struct node pnode typede...

線性表 棧 佇列的的順序儲存和鏈式儲存

先概括一下線性表順序儲存和鏈式儲存。線性表的順序儲存是用一組位址連續的儲存單元依次儲存線性表的資料元素。線性表的鏈式儲存是用指標將儲存線性表中的資料元素的那些單元依次串聯在一起。接下來說明。如圖所示結果,順序儲存插入 刪除 節點比鏈式儲存的速度慢 而查詢操作有基於序號的查詢,順序儲存比鏈式儲存的速度...

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

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