順序棧的完整代碼 數(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/*來(lái)構(gòu)造空棧s*/status initstack(sqstack*s){s->top=-1//將棧頂指針設(shè)置為-1,這意味著順序堆棧是空的。Return OK}
在空間性能比較開(kāi)始時(shí),順序堆棧必須有一個(gè)固定的長(zhǎng)度,因此存在存儲(chǔ)元素?cái)?shù)量有限和空間浪費(fèi)的問(wèn)題。
鏈堆棧中沒(méi)有堆棧滿問(wèn)題。只有當(dāng)內(nèi)存中沒(méi)有可用空間時(shí),堆棧才會(huì)滿。但是,每個(gè)元素都需要一個(gè)指針字段,從而導(dǎo)致結(jié)構(gòu)開(kāi)銷。
當(dāng)元素個(gè)數(shù)變化較大時(shí),最好采用鏈?zhǔn)蕉褩?,否則應(yīng)采用順序堆棧。