鍊錶(linked list)是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標(pointer)
由於不必須按順序儲存,鍊錶在插入的時候可以達到 o(1) 的複雜度,比另一種線性表 —— 順序表快得多,但是查詢乙個節點或者訪問特定編號的節點則需要 o(n)o(n) 的時間,而順序表相應的時間複雜度分別是 o(log n)o(log n) 和 o(1)o(1)。
使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶體空間,實現靈活的記憶體動態管理。但是鍊錶失去了陣列隨機讀取的優點,同時鍊錶由於增加了結點的指標域,空間開銷比較大。
在電腦科學中,鍊錶作為一種基礎的資料結構可以用來生成其它型別的資料結構。鍊錶通常由一連串節點組成,每個節點包含任意的例項資料(data fields)和一或兩個用來指向上乙個/或下乙個節點的位置的鏈結(links)。鍊錶最明顯的好處就是,常規陣列排列關聯專案的方式可能不同於這些資料專案在記憶體或磁碟上順序,資料的訪問往往要在不同的排列順序中轉換。而鍊錶是一種自我指示資料型別,因為它包含指向另乙個相同型別的資料的指標(鏈結)。
鍊錶允許插入和移除表上任意位置上的節點,但是不允許隨機訪問。鍊錶有很多種不同的型別:單向鍊錶,雙向鍊錶以及迴圈鍊錶。鍊錶通常可以衍生出迴圈鍊錶,靜態鍊錶,雙鏈表等。對於鍊錶使用,需要注意頭結點的使用。
鍊錶指標域指向哪 鍊錶的概念與結點類模板
類模板的定義 template class node 類的實現部分 建構函式,初始化資料和指標成員 template node node const t data,node next 0 data data next next 返回後繼結點的指標 template node node nextnod...
鍊錶 鍊錶環問題總結
給定乙個單鏈表,只給出頭指標h 1 如何判斷是否存在環?2 如何知道環的長度?3 如何找出環的連線點在 4 帶環鍊錶的長度是多少?1 如何判斷是否存在環?對於問題1,使用追趕的方法,設定兩個指標slow fast,從頭指標開始,每次分別前進1步 2步。如存在環,則兩者相遇 如不存在環,fast遇到n...
鍊錶的 next指向問題
這是在leetcode上做的一道鍊錶題,有時候會不懂到底 next 指的是本節點的下乙個節點還是自己指向了自己的下乙個節點,之後發現是這樣的 node.next head.next head.next head.next.next node.next.next head 這種就代表等號左邊指向右邊,...