棧的順序表示的實(shí)現(xiàn)完整代碼 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)之棧的順序存儲(chǔ)表示與實(shí)現(xiàn)?
數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)之棧的順序存儲(chǔ)表示與實(shí)現(xiàn)?使用top指示順序堆棧的頂部指針。如果top=-1,則堆棧為空,否則,堆棧的元素?cái)?shù)為top。下面是順序堆棧的結(jié)構(gòu)定義?define maxsize 20/*存儲(chǔ)空
數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)之棧的順序存儲(chǔ)表示與實(shí)現(xiàn)?
使用top指示順序堆棧的頂部指針。如果top=-1,則堆棧為空,否則,堆棧的元素?cái)?shù)為top。下面是順序堆棧的結(jié)構(gòu)定義?define maxsize 20/*存儲(chǔ)空間的初始分配*/typedef int selemtype/*selemtype。類型取決于實(shí)際情況。這里我們假設(shè)它是int type*//*sequential stack structure*/typedef struct{selemtype}Data[maxsize]int top/*用于棧頂指針*/}sqstack/*來構(gòu)造空棧s*/status initstack(sqstack*s){s->top=-1//將棧頂指針設(shè)置為-1,這意味著順序堆棧是空的。Return OK}
在空間性能比較開始時(shí),順序堆棧必須有一個(gè)固定的長度,因此存在存儲(chǔ)元素?cái)?shù)量有限和空間浪費(fèi)的問題。
鏈堆棧中沒有堆棧滿問題。只有當(dāng)內(nèi)存中沒有可用空間時(shí),堆棧才會(huì)滿。但是,每個(gè)元素都需要一個(gè)指針字段,從而導(dǎo)致結(jié)構(gòu)開銷。
當(dāng)元素個(gè)數(shù)變化較大時(shí),最好采用鏈?zhǔn)蕉褩?,否則應(yīng)采用順序堆棧。