工程目錄結構:
函式的返回結果,ok、erreo、true、false
12 typedef int elemtype; //
結點資料域的資料型別
1314
//#endif
common.c:
1 #include "linkstack.h:common.h"2
3status visit(elemtype e)
4
1linkstack.c://鏈棧的結點結構
2 typedef struct
stacknode
3stacknode, *linkstackptr;78
//鏈棧結構
9 typedef struct
10linkstack;
1 #include 2 #includemain.c:3 #include "
common.h
"4 #include "
linkstack.h"5
6//初始化鏈棧
7 status initlinkstack(linkstack *s)814
15 s->top =null;
16 s->count = 0;17
18return
ok;19}20
21 status clearlinkstack(linkstack *s)
2232
33return
ok;34}35
36//
判斷鏈棧是否為空
37status linkstackempty(linkstack s)
3844
45//
壓棧46 status linkstackpush(linkstack *s, elemtype e)
4755
56//
彈棧57 status linkstackpop(linkstack *s, elemtype *e)
5868
69//
獲取棧頂元素的值
70 status getlinkstacktop(linkstack s, elemtype *e)
7178
return
ok;79}80
81//
返回鏈棧的長度
82int
linkstacklength(linkstack s)
8386
87status linkstacktr**erse(linkstack s)
8896
return
ok;97}98
99void
linkstackstart()
100108
else
109112
113if (true ==linkstackempty(s))
114117
else
118121
122 printf("
\n壓棧元素(1-5)\n");
123for (int i = 1; i <= 5; ++i)
124 linkstackpush(&s, i);
125126
if (true ==linkstackempty(s))
127130
else
131134
135 printf("
\n鏈棧中的元素一次是:\n");
136linkstacktr**erse(s);
137138
elemtype e;
139 linkstackpop(&s, &e);
140141 printf("
\n\n彈出棧頂元素: %d
", e);
142143 getlinkstacktop(s, &e);
144 printf("
\n\n現在的棧頂元素為: %d\n
", e);
145146 clearlinkstack(&s);
147 printf("
\n清空鏈棧鏈棧,count = %d\n
", s.count);
148149 printf("
\n\n######## 鏈棧 測試 end ############\n");
150 }
1intmain()
2
資料結構 棧 棧的鏈式儲存結構
資料結構 棧 棧的鏈式儲存結構 用頭插法建立的鏈棧,棧頂元素為s next所指結點 date 2017 4 14 include include define initsize 100 define elemtype char typedef struct lnode linkstack void ...
鏈式儲存mysql 鏈棧 棧的鏈式儲存結構
前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...
《資料結構 棧》鏈式儲存
一 鏈式儲存 和 順序結構 對比?棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1 如果棧的數量可預知,則使用順序棧,否則,則使用鏈棧 鏈棧 要求每個元素都有指標域,增加了記憶體開銷,但對於長度無限制。二 棧 鏈式結構 棧的 順序結構 與 鏈結構,他們在時間複雜度上都一樣,都為o 1...