面試題 順序表(陣列)和鍊錶的區別和聯絡

2021-10-18 19:33:51 字數 603 閱讀 9007

順序表(陣列)

缺點

頭部或者中間插入刪除資料,需要挪動資料,時間複雜度是o(n),空間不夠,需要增容,增容有一些消耗,其次一般增容是2倍,那麼就可能存在一定的空間浪費。

優點

相對而言空間利用率更高,不需要額外的空間,占用空間小,鍊錶需要存指標。物理空間是連續的,第乙個,支援隨機訪問,可以用下標訪問。(最大的優勢),第二個,相比鍊錶結構快取命中率高。

cpu取資料進行運算,先看資料在不在快取

1.在(快取命中),直接運算,再寫回記憶體。

2.不在(快取未命中),從記憶體載入資料到快取(載入一段連續記憶體資料),再運算,再寫回記憶體,鍊錶因為物理空間不連續,而在快取中一次是載入一段資料,有可能會把不需要的資料載入進來,造成快取汙染。

雙向帶頭迴圈鍊錶(鍊錶)

優點:可以支援任意位置o(1)的插入刪除,不需要增容,不存在空間浪費。

缺點:不需要隨機訪問,快取命中率相對低。

綜上所述順序表和煉表互補。

順序表和煉表的相關熱點面試題

一,比較順序表和煉表的優缺點,說說他們分別在什麼場景下使用?順序表支援隨機訪問,單鏈表不支援 順序表插入和刪除資料效率很低,時間複雜度為o n 除尾插尾刪 單鏈表插入刪除效率更高時間複雜度為o 1 順序表的cpu快取記憶體效率更高,單鏈表cpu告訴快取低 二,刪除乙個無頭單鏈表的非尾節點 三,在乙個...

和鍊錶有關面試題

面試中被問鍊錶的題目我就不再多說,直接總結題目。1 將鍊錶逆序 這個問題很早就研究過,但後來一次面試的時候我突然緊張忘了,沒答上來。我不知道大家的解法是什麼,我的解法是遍歷鍊錶是用前插發插入節點,最後的鍊錶就是逆序的。python view plain copy class listnode def...

順序表和煉表的區別

首先了解順序表和煉表的概念 1.順序表 順序表是在計算機記憶體中以陣列 的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。特點 1 在順序表中,各個表項的邏輯順...