棧與佇列 棧的鏈式儲存結構

2022-01-15 13:29:18 字數 2268 閱讀 2602

1

鏈棧通常用單鏈表表示,由於棧的主要操作是棧頂插入與刪除,顯然以鍊錶的頭部作為棧頂最方便,而且沒必要為了操作方便附加乙個頭結點2//

鏈式儲存結構(將單鏈表頭指標與棧頂合二為一)

3 typedef struct

stacknode

4stacknode,*linkstackptr;

8 typedef struct

linkstack

913 status push(linkstack *s,elemtype e)

1422

23 status pop(linkstack *s,elemtype *e)

2430 *e = s->top->data;

31 p = s->top;

32 s->top = s->top->next;

33free

(p);

34 s->count--;

35return

ok;

36}

3738

39 可執行**來自https://

blog.csdn.net/sinat_35297665/article/details/79489822

40 #include 41

42using

namespace

std;

4344 typedef struct

nodenode;

5152

5354 typedef struct

stacklink_stack;

6162

6364

/**建立乙個空棧

*/65

66 link_stack *creat_stack()

6768

8384

8586

/**入棧操作:push

*/87

88 link_stack * push_stack(link_stack *p,int

elem)

8990

119120

121122

/**出棧操作:pop

*/123

124 link_stack * pop_stack(link_stack *p)

125126

141142

else

157158

}159

160161

162/*

*棧的遍歷:輸出棧

*/163

164int show_stack(link_stack *p)

165166

183184

while(null !=temp)

185186

193194 cout <195196

197198

return0;

199200

}201

202203

204int

main()

205206

225226 cout << "

空棧插入5個元素後:

"<227228

show_stack(p);

229230

231232 cout << "

刪除3個元素後:

"<233234

for(i = 3;i--;)

235236

241242

show_stack(p);

243244 cout << "

count:

"<< p->count <245246

247248 cout << "

刪除2個元素後:

"<249250

for(i = 2;i--;)

251252

257258

show_stack(p);

259260 cout << "

count:

"<< p->count <261262

263264 push_stack(p,6

);265

266 cout << "

插入元素6後:

"<267268

show_stack(p);

269270 cout << "

count:

"<< p->count <271272

273274

return0;

275276 }

棧 佇列的鏈式儲存結構

前面已經講解過棧是什麼,也用順序儲存的方式實現了棧,今天學習了鍊錶,我們就用鏈式儲存來實現一下棧 棧就是規定在一端進行插入和刪除的線性表,而用鏈式儲存實現棧,是在頭部進行操作還是在尾部進行操作呢?那我們還是來看一下頭部插入和尾部插入的動畫 看完這兩個我們發現頭插和尾插的時間複雜度都是o 1 可是我們...

棧與佇列(2)棧的鏈式儲存

棧的鏈式儲存結構 鏈棧 基本上不存在棧滿的情況,棧滿意味著記憶體滿了,這時候電腦會宕機 棧頂指標和頭指標合二為一 鏈棧結構 typedef struct stacknode stacknode,linkstackptr typedef struct linkstack linkstack 進棧 先給...

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

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