查ICP網(wǎng):全新的綜合網(wǎng)站備案信息查詢(xún)網(wǎng)
Copyright ? 2008-2028 www.mshuangcha.com [ 查icp] All Rights Reserved.
鏈棧和順序棧的區(qū)別是什么?很多小伙伴不知道怎么區(qū)別鏈棧和順序棧,下面小編就整理下鏈棧和順序棧的區(qū)別。
鏈棧和順序棧
和順序棧相比,鏈棧有一個(gè)比較明顯的優(yōu)勢(shì)是:通常不會(huì)出現(xiàn)棧滿的情況。
因?yàn)轫樞驐S脭?shù)組實(shí)現(xiàn),必須事先確定棧的大小,對(duì)內(nèi)存的使用效率并不高,無(wú)法避免因數(shù)組空間用光而引起的溢出問(wèn)題;而鏈棧因?yàn)閯?dòng)態(tài)申請(qǐng)內(nèi)存,一般不會(huì)出現(xiàn)棧滿情況,空棧還是會(huì)出現(xiàn)的。
而因?yàn)殒湕:晚樞驐6际菞#瑮O冗M(jìn)后出,只能在棧頂進(jìn)行插入和刪除操作,所以鏈棧在插入和刪除操作上對(duì)于順序棧并無(wú)優(yōu)勢(shì)。
棧
棧作為一種數(shù)據(jù)結(jié)構(gòu),是一種只能在一端進(jìn)行插入和刪除操作的特殊線性表。它按照后進(jìn)先出的原則存儲(chǔ)數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開(kāi)始彈出數(shù)據(jù)(最后一個(gè)數(shù)據(jù)被第一個(gè)讀出來(lái))。棧具有記憶作用,對(duì)棧的插入與刪除操作中,不需要改變棧底指針。
棧是允許在同一端進(jìn)行插入和刪除操作的特殊線性表。允許進(jìn)行插入和刪除操作的一端稱(chēng)為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動(dòng);棧中元素個(gè)數(shù)為零時(shí)稱(chēng)為空棧。插入一般稱(chēng)為進(jìn)棧(PUSH),刪除則稱(chēng)為退棧(POP)。棧也稱(chēng)為先進(jìn)后出表。
棧可以用來(lái)在函數(shù)調(diào)用的時(shí)候存儲(chǔ)斷點(diǎn),做遞歸時(shí)要用到棧!
棧在程序的運(yùn)行中有著舉足輕重的作用。最重要的是棧保存了一個(gè)函數(shù)調(diào)用時(shí)所需要的維護(hù)信息,這常常稱(chēng)之為堆棧幀或者活動(dòng)記錄。堆棧幀一般包含如下幾方面的信息:
1.函數(shù)的返回地址和參數(shù)
2. 臨時(shí)變量:包括函數(shù)的非靜態(tài)局部變量以及編譯器自動(dòng)生成的其他臨時(shí)變量。