和順序堆疊相比,鏈棧的優勢是:通常不會出現堆疊滿的情況。因為順序棧用數組實現,必須事先確定棧的大小,對內存的使用效率並不高,無法避免因數組空間用光而引起的溢出問題;而鏈棧因為動態申請內存,一般不會出現棧滿情況。
本教學操作環境:windows7系統、Dell G3電腦。
和順序堆疊相比,鏈棧有一個比較明顯的優點是:通常不會出現堆疊滿的情況。
因為順序堆疊用數組實現,必須事先確定棧的大小,對記憶體的使用效率並不高,無法避免因數組空間用光而引起的溢出問題;而鏈棧因為動態申請內存,一般不會出現棧滿情況,空棧還是會出現的。
而因為鏈棧和順序堆疊都是棧,棧先進後出,只能在棧頂進行插入和刪除操作,所以鏈棧在插入和刪除操作上對於順序棧並無優勢。
堆疊
堆疊作為資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照後進先出的原則儲存數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀取數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。
堆疊是允許在同一端進行插入和刪除操作的特殊線性表。允許插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為先進後出表。
堆疊可以用來在函數呼叫的時候儲存斷點,做遞歸時要用到堆疊!
堆疊在程式的運作中有著舉足輕重的作用。最重要的是棧保存了一個函數呼叫時所需要的維護訊息,這常常稱之為堆疊幀或活動記錄。堆疊幀一般包含如下幾方面的資訊:
1.函數的回傳位址與參數
2.臨時變數:包括函數的非靜態局部變數以及編譯器自動產生的其他臨時變數。
更多相關知識,請造訪常見問題欄位!
以上是鏈棧和順序棧相比,有一個比較明顯的優勢是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!