棧的鏈式儲存書上沒有,沒有!但是不能影響我們前進的腳步。盤他!
棧的鏈式儲存實際上就是單鏈表,僅僅在尾部操作,這就是重點。
1.結構
鏈式儲存,當然要典型的鍊錶的結構
typedef
int selemtype;
typedef
struct singlelist
slist;
然後再新增乙個棧的結構,這個全域性結構記錄了棧的關鍵資訊。
typedef
struct
sqs;
2.重點
3.**
sqstacklist.h
#pragma once
#include
#include
typedef
int selemtype;
typedef
struct singlelist
slist;
typedef
struct
sqs;
typedef
int status;
#define error 0;
#define ok 1;
//初始化鍊錶,建立乙個空頭
status init_stack
(sqs* s)
;//壓棧
status push
(sqs* s, selemtype e)
;//出棧
status pop
(sqs* s, selemtype* e)
;//列印鍊錶
void
printsinglelist
(slist* sl)
;
sqstacklist.c
#pragma once
#include
"sqstacklist.h"
extern sqs ssq;
status init_stack
(sqs* s)
lnew->next =
null
; s->base = lnew;
s->top = lnew;
s->stack_size =0;
return ok;
}status push
(sqs* s, selemtype e)
lnew->data = e;
lnew->next =
null
; s->top->next = lnew;
s->top = lnew;
s->stack_size++
;return ok;
}//出棧
status pop
(sqs* s, selemtype* e)
ll = s->base;
for(i =
0; i < s->stack_size -
1; i++
)*e = s->top->data;
free
(s->top)
; s->top = ll;
s->top->next =
null
; s->stack_size--
;return ok;
}void
printsinglelist
(slist* sl)
}
測試**
#include
#include
#include
"sqstacklist.h"
sqs ssq;
intmain()
pop(
&ssq,
&n);
system
("pause");
}
鏈式儲存mysql 鏈棧 棧的鏈式儲存結構
前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...
線性表6 棧的鏈式儲存(鏈棧)
4.應用 數制轉換 從資料結構角度看,棧和佇列也是線性表,只不過是操作受限的線性表。棧 只允許在一端進行插入和刪除操作的線性表,允許操作的一端為棧頂,不允許操作的一段稱之為棧底。棧頂是表尾,棧底是表頭。後進先出 lifo 先進後出 filo first in last out 儲存 順序儲存 鏈式儲...
資料結構 鏈棧(棧的鏈式儲存結構)
工程目錄結構 函式的返回結果,ok erreo true false 12 typedef int elemtype 結點資料域的資料型別 1314 endif common.c 1 include common.h 2 3status visit elemtype e 4linkstack.h 1...