Python資料結構與演算法之鍊錶與順序表的對比

2021-09-25 12:34:53 字數 477 閱讀 2546

鍊錶與順序表的對比

鍊錶失去了順序表隨機讀取的優點,同時鍊錶由於增加了節點的指標域,空間開銷比較大,但對儲存空間的使用要相對靈活。

鍊錶與順序表的各種操作複雜度如圖所示:

操作鍊錶

順序表訪問元素

o(n)

o(1)

在頭部插入/刪除

o(1)

o(n)

在尾部插入/刪除

o(n)

o(1)

在中間插入/刪除

o(n)

o(n)

注意:雖然表面看起來複雜度都是o(n),但是鍊錶和順序表在插入和刪除時進行的是完全不同的操作。鍊錶的主要耗時操作是遍歷查詢,刪除和插入操作本身的複雜度是o(1)。

順序表查詢很快,主要耗時的操作是拷貝覆蓋。因為除了目標元素在尾部的特殊情況,順序表進行插入和刪除時需要對操作點之後的所有元素進行前後移位操作,只能通過拷貝和覆蓋的方法進行。

資料結構與演算法之鍊錶

鍊錶的分類 1 單鏈表 頭插法 只需要維護乙個頭結點即可,常用來模擬堆疊 尾插法 需要維護頭結點和尾結點,常用來模擬佇列。2 雙向鍊錶 雙向遍歷,可以用來儲存網頁的歷史記錄等 3 迴圈鍊錶 經常出現在面試題中,判斷鍊錶是否有環。鍊錶的刪除 方式一 維護兩個指標,current 表示當前節點 和pre...

資料結構與演算法之鍊錶

線性表 線性表的定義 一些元素的序列,維持著元素之間的線性關係。實現線性表的基本需要是 1 能夠找到表首元素 2 從表裡的任意元素出發,能找到它之後的下乙個元素 基於鏈結技術實現的線性表稱為鍊錶。單鏈表 單鏈表的特點總結如下 1 乙個單鏈表由一些具體的表結點組成 2 每個節點是乙個物件,有自己的標識...

資料結構與演算法 資料結構之雙向鍊錶

雙向鍊錶自我感覺修改的時候有點繞,不過還好,如果實在不理解一定記得畫圖,其實很容易,但是想出來容易漏掉一些步驟,總之就是多動手 package org.yc public class test class doublelinkedlistheadelse temp.next studentnode ...