鍊錶用途 陣列效率 鍊錶效率 鍊錶優缺點

2022-03-10 17:43:25 字數 1288 閱讀 5250

三大資料結構的實現方式

資料結構

實現方式

棧 陣列/

單鏈表佇列

陣列/雙端鍊錶

優先順序佇列

陣列/堆

/有序鍊錶

雙端佇列

雙向鍊錶

陣列與鍊錶實現方式的比較

陣列與鍊錶都很快

如果能精確**棧或者佇列所需要容納的資料量 --- 陣列

如果不能                                   --- 鍊錶

陣列的效率

無序陣列

有序陣列

查詢比較次數o(n)

比較次數o(logn)<—二分查詢

插入o(1)       

比較次數o(n)              

移動次數maxo(n)           

刪除比較次數o(n)

比較次數o(logn)           

移動次數maxo(n)      

移動次數maxo(n)

鍊錶的效率

單鏈表雙端鍊錶

有序鍊錶

雙向鍊錶

頭插o(1)      

o(1)

頭刪o(1)      

o(1)

尾插o(1)

o(1)

尾刪o(n)

o(1)

插入max o(n) | min o(n/2) 

刪除o(1)

查詢結點

o(n) 次比較 無移動次數

刪除結點

o(n) 次比較 無移動次數

o(n) – deletekey(int i)

指定結點後插入

o(n) 次比較 無移動次數

o(n) – insertafter(int i)

鍊錶優點

l  使用記憶體無限制 可以擴充套件到所有可以使用的記憶體

陣列大小在建立的時候 就固定了經常由於陣列太大 導致效率低下 或者陣列太小導致空間溢位

l  插入刪除結點的時候 鍊錶不需要任何移動 特別是複製時間遠遠大於比較時間的時候

雙向鍊錶

優點:

前向遍歷

後向遍歷

缺點:

每次插入或者刪除乙個鏈結點時候 需要處理四個鏈結點的引用(2個連線前乙個鏈結點 兩個鏈結後乙個)由於多了兩個引用 鏈結點占用的空間也變大了

效率比較 鍊錶

單鏈表雙端鍊錶 有序鍊錶 雙向鍊錶 頭插o 1 o 1 頭刪o 1 o 1 尾插o 1 o 1 尾刪o n o 1 插入max o n min o n 2 刪除o 1 查詢結點 o n 次比較 無移動次數 刪除結點 o n 次比較 無移動次數 o n deletekey int i 指定結點後插入 ...

陣列和鍊錶插入效率比較

陣列和鍊錶將物件插入指定位置時,大致可以分為兩個步驟 1 找到要插入元素的位置 2 進行插入操作 可以得到等式 找到位置所需時間 插入所需時間 將物件插入指定位置所需總時間 由此可以先假設幾個值 找到插入元素的位置涉及的變數 要插入的位置為z 獲取乙個物件引用所需時間m 進行插入操作涉及的變數 移動...

表 陣列 鍊錶

陣列 陣列是個表,是個連續儲存的表。在c裡面,首先我們知道陣列容量是固定的,使用前先分配大小,所以使用後就不是很方便調整容量 解決這個問題在c裡面一般是預先估計陣列的大小,然後用雙倍的容量建立陣列,是不是很麻煩?正因為陣列是連續儲存和容量固定,所以注定陣列不方便進行增刪這種改變容量的操作。原因是假如...