回覆列表
-
1 # 讓跑步更有力量
-
2 # 使用者8803459397052
儲存結構不同:
鏈棧動態分配記憶體儲存資料,不浪費記憶體,儲存的資料不連續。
順序棧使用固定大小陣列儲存資料,資料量小時浪費記憶體,過多時出問題,儲存資料連續。
它們的具體區別如下:
順序棧的實現在於使用了陣列這個基本資料結構,陣列中的元素在記憶體中的儲存位置是連續的,且編譯器要求我們在編譯期就要確定陣列的大小,這樣對記憶體的使用效率並不高,一來無法避免因陣列空間用光而引起的溢位問題。在系統將記憶體分配給陣列後,則這些記憶體對於其他任務就不可用。而對於鏈棧而言,使用了連結串列來實現棧,連結串列中的元素儲存在不連續的地址,由於是動態申請記憶體,所以我們可以以非常小的記憶體空間開始,另外當某個項不使用時也可將記憶體返還給系統。
空間效能比較初始時順序棧必須確定一個固定的長度,所以有儲存元素個數的限制和空間浪費的問題。
鏈棧無棧滿問題,只有當記憶體沒有可用空間時才會出現棧滿,但是每個元素都需要一個指標域,從而產生了結構性開銷。
當棧在使用過程中元素個數變化較大時,用鏈棧比較好,反之,應該採用順序棧。