一、從操作上角度
順序表和煉表都具有增、刪、查、改的相同功能,但演算法複雜度卻不相同。
(1)增:順序表往指定位置,不覆蓋的新增乙個值,後面的值日要往後移動,演算法複雜度為o(n);鍊錶往指定位置新增乙個節點,需要從表頭遍歷到指定位置,演算法複雜度為o(n),如果帶有索引的節點,演算法複雜度為o(1)。
(2)刪:順序表指定位置,刪除乙個值時,需要將後面的值向前移動,演算法複雜度為o(n); 鍊錶指定乙個位置,刪除乙個時,如果沒有對指定節點進行索引,需要從表頭遍歷到指定位置,然後將指定節點刪除,演算法複雜度為o(n), 如果對指定節點做索引,刪除節點的演算法複雜度為o(1)。
(3) 查:順序表直接查詢指定位置值演算法複雜度為o(1);鍊錶需要遍歷節點到指定位置,演算法複雜度為o(n);如果節點指定位置節點有索引,演算法複雜度為o(1).
(4) 改:修改其實就是查詢修改值的位置,再對值進行修改。
順序表的增和刪表數量規模比較大時,平均移動一半的元素,效率不高。對於有索引的鍊錶,新增和刪除只需要o(1)演算法複雜度,效率高。因此,鍊錶用於頻繁的新增和刪除資料時,有優勢。
二、從記憶體角度
(1)順序表是由陣列組成的線性表,陣列是一組位址連續的單元儲存塊,分配於棧區,可以自動釋放。
(2)鍊錶是由不連續的位址節點組成的線性表,每個節點可以是乙個單元的位址塊或連續位址塊,分配於堆區,節點必須手動釋放。記憶體管理比較不方便。
順序表和煉表的區別
首先了解順序表和煉表的概念 1.順序表 順序表是在計算機記憶體中以陣列 的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。特點 1 在順序表中,各個表項的邏輯順...
陣列和鍊錶的區別
陣列與鍊錶的區別 1.基於空間的考慮 陣列的儲存空間是靜態,連續分布的,估計過大造成空間浪費,估計太小又將使空間溢位機會增多。而鍊錶的儲存空間是動態分布的,只要記憶體空間尚有空閒,就不會產生溢位 鍊錶中每個節點除了資料域外,還有指標域,儲存密度小於1 陣列為 儲存空間利用率就越高。2.基於時間的考慮...
陣列和鍊錶的區別
1 陣列的儲存空間是一大片連續的,鍊錶的儲存空間是不定的,每個鍊錶的節點元素都會儲存該節點的資料和下個節點的位址指向。陣列初使化必須制定大小,而鍊錶卻不需要便是這個原因。2 就增刪改查而言,陣列因為位址是連續的,所以陣列的查詢修改很快,但是增刪的時候由於需要移動後面所有的元素反而較慢,對應的鍊錶在查...