棧的鏈式儲存結構(C語言實現)

2022-07-01 21:21:10 字數 1568 閱讀 7755

1 #include 2 #include 3

4#define ok 1

5#define err 2

6#define true 1

7#define false 0

89 typedef int status; //

定義函式返回的狀態,ok & err

10 typedef char datatype; //

定義棧中每個元素的資料型別,這裡暫定為字元型

1112 typedef struct

linkstack_anon linkstack;

1617

/*函式原型,棧的基本操作

*/18 linkstack *createlinkstack(datatype first_node_value);

19 status isempty(linkstack *l);

20void clear(linkstack **l);

21 datatype gettop(linkstack *l);

22int getlength(linkstack *l);

23 status push(linkstack *l, datatype node_to_push);

24 datatype pop(linkstack *l);

25void showstack(linkstack *l);

2627

intmain()

5455 linkstack *createlinkstack(datatype first_node_value)

62 status isempty(linkstack *l)

68void clear(linkstack **l)

81 *l=null; //

將指向棧的指標設為null82}

83}84 datatype gettop(linkstack *l)

90int getlength(linkstack *l)

96return

i;97

}98 status push(linkstack *l, datatype node_to_push)

110 datatype pop(linkstack *l)

122void showstack(linkstack *l)

129}

130/*

131棧的定義:僅限定在表尾進行插入和刪除操作的線性表,即操作受限的線性表

132一般,把允許插入和刪除的一端作為棧頂,另一端則是棧底

133不含任何元素的棧就是空棧

134所以,棧又稱後進先出(last in first out)的線性表

135對於鏈式儲存的棧,不存在棧滿的情況,除非已經沒有可用的記憶體了,如果真的發生,那此時計算機就面臨宕機崩潰的地步了

136*/

137/*

環境: code::blocks with gcc 5.1

*/

執行截圖:

C語言實現棧(鏈式棧)

由於棧的插入 刪除操作只能在一端進行,而對於線性鍊錶來說,在首端插入或 刪除比在尾端要容易一些,所以,將線性鍊錶的首端作為棧頂端,即將頭指標作為棧頂指標。1 結構體 1 typedef struct nodenode 56 typedef struct my stackstack 2 初始化 1 s...

C 語言實現鏈式棧

鏈式棧是一種資料儲存結構,可以通過單鏈表的方式來實現,使用鏈式棧的優點在於它能夠克服用陣列實現的順序棧空間利用率不高的特點,但是需要為每個棧元素分配額外的指標空間用來存放指標域。棧是只能在某一端插入和刪除的特殊線性表。它按照後進先出的原則儲存資料,先進入的資料被壓入棧底 push 最後的資料在棧頂 ...

C語言實現棧的順序儲存與鏈式儲存

一 實驗目的 1.深入了解棧的定義和特性。2.掌握棧的順序表示 鍊錶表示以及相應操作的實現,鞏固對這兩種結構的構造方法的掌握。3.會靈活運用棧結構解決某些實際問題。二 實驗內容 1.棧的基本操作的實現 初始化 賦值 取值 插入 刪除等 要求分別採用順序和鏈式儲存結構。順序棧源程式 include i...