鍊錶(LinkedList)解題總結

2022-07-01 18:03:13 字數 823 閱讀 8614

定義

鍊錶(linked list)是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標(pointer)。

鍊錶的操作

操作時間複雜度

查詢o(n)

插入o(1)(僅插入本身,加上查詢就是o(n))

刪除o(1)(僅刪除本身,加上查詢就是o(n))

鍊錶型別

鍊錶型別

定義單鏈表

節點只有乙個指標,指向後繼節點

雙鏈表節點有兩個指標,乙個指向前置節點,乙個指向後繼節點

迴圈鍊錶

鍊錶首尾相連

解題口訣:乙個原則,兩個考點,兩個技巧,三個注意

乙個原則

乙個原則:畫圖!畫圖!畫圖!重要的事情要說三遍。鍊錶的題目很容易把人繞暈,通過畫圖能夠很思路理清,不容易弄錯。

畫圖時要聚焦子結構,忽略其他資訊。

兩個考點

鍊錶的題目絕大多數圍繞是這兩種型別:

兩個技巧

三個注意

即使畫圖,思路也正確了,也要注意以下三點:

快取使用陣列 / map 來快取鍊錶中結點的資訊。這種方法有點賴皮,考察鍊錶的時候,實際上不希望使用這種方式來解決。

快慢指標

一快(一次2步)一慢(一次1步)從頭節點出發。對於判斷是否有環、找中間節點等問題很有效。

題目包括:

雙指標一前一後從頭節點出發,或者一頭一尾往中間走。對於判斷倒數第n個節點、反轉鍊錶等問題特別有效。

遞迴鍊錶問題都可以分割成幾個相同的子問題以縮小問題規模,再通過呼叫自身返回區域性問題的答案從而來解決大問題的。

題目包含:

LinkedList 鍊錶

線性表是一種簡單的資料結構,其主要特點是元素之間存在 一對一 的關係,除去第乙個元素,每個元素都存在唯一乙個 前驅節點 除去最後乙個元素都存在唯一乙個 後繼節點 簡單的線性表有 陣列 單鏈表 雙向鍊錶 靜態鍊錶等。順序表 陣列 優缺點 陣列不僅邏輯上,物理上位置也相鄰,可隨機訪問,但刪除或插入元素時...

LinkedList 鍊錶

最近複習到鍊錶 linkedlist 一般來說共有大概有兩種實現方式 1.陣列實現 和 2.鏈式實現。我僅使用了直接鏈式實現,如下。其他的實現方式,大家不妨自己嘗試下吧。author ace yom peizhen zhang date 2015 8 17 description 鍊錶實現 ifnd...

鍊錶 LinkedList

原文中singlelinklist的remove方法有問題,因為是 node current firstnode.getnext 所以導致鍊錶的第乙個節點刪不掉。修改如下 public class singlelinklist 刪除某個節點 param element return 刪除成功返回tr...