和順序棧相比,鏈棧的優(yōu)勢是:通常不會出現(xiàn)棧滿的情況。因為順序棧用數(shù)組實現(xiàn),必須事先確定棧的大小,對內(nèi)存的使用效率并不高,無法避免因數(shù)組空間用光而引起的溢出問題;而鏈棧因為動態(tài)申請內(nèi)存,一般不會出現(xiàn)棧滿情況。
本教程操作環(huán)境:windows7系統(tǒng)、Dell G3電腦。
和順序棧相比,鏈棧有一個比較明顯的優(yōu)勢是:通常不會出現(xiàn)棧滿的情況。
因為順序棧用數(shù)組實現(xiàn),必須事先確定棧的大小,對內(nèi)存的使用效率并不高,無法避免因數(shù)組空間用光而引起的溢出問題;而鏈棧因為動態(tài)申請內(nèi)存,一般不會出現(xiàn)棧滿情況,空棧還是會出現(xiàn)的。
而因為鏈棧和順序棧都是棧,棧先進后出,只能在棧頂進行插入和刪除操作,所以鏈棧在插入和刪除操作上對于順序棧并無優(yōu)勢。
棧
棧作為一種數(shù)據(jù)結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照后進先出的原則存儲數(shù)據(jù),先進入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時候從棧頂開始彈出數(shù)據(jù)(最后一個數(shù)據(jù)被第一個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指針。
棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數(shù)為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為先進后出表。
棧可以用來在函數(shù)調(diào)用的時候存儲斷點,做遞歸時要用到棧!
棧在程序的運行中有著舉足輕重的作用。最重要的是棧保存了一個函數(shù)調(diào)用時所需要的維護信息,這常常稱之為堆棧幀或者活動記錄。堆棧幀一般包含如下幾方面的信息:
1.函數(shù)的返回地址和參數(shù)
2. 臨時變量:包括函數(shù)的非靜態(tài)局部變量以及編譯器自動生成的其他臨時變量。