搜尋
首頁常見問題鍊錶是什麼

鍊錶是什麼

Jun 24, 2020 pm 12:05 PM
鍊錶

鍊錶是什麼

鍊錶是一種實體儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是透過鍊錶中的指標連結次序實現的。鍊錶由一系列結點(鍊錶中每一個元素稱為結點)組成,結點可以在運行時動態產生。每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點位址的指標域。相較於線性表順序結構,操作複雜。由於不必須按順序存儲,鍊錶在插入的時候可以達到O(1)的複雜度,比另一種線性表順序表快得多,但是查找一個節點或訪問特定編號的節點則需要O(n)的時間,而線性表和順序表對應的時間複雜度分別是O(logn)和O(1)。

使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用電腦記憶體空間,實現靈活的記憶體動態管理。但是鍊錶失去了數組隨機讀取的優點,同時鍊錶由於增加了結點的指標域,空間開銷比較大。鍊錶最明顯的好處是,常規數組排列關聯項目的方式可能不同於這些資料項目在記憶體或磁碟上順序,資料的存取往往要在不同的排列順序中轉換。鍊錶允許插入和移除表上任意位置上的節點,但是不允許隨機存取。鍊錶有很多種不同的類型:單向鍊錶,雙向鍊錶以及循環鍊錶。鍊錶可以在多種程式語言中實現。像Lisp和Scheme這樣的語言的內建資料型別中就包含了鍊錶的存取和操作。程式語言或物件導向語言,如C,C 和Java則依賴易變工具來產生鍊錶。

特點

線性表的鍊式儲存表示的特點是用一組任意的儲存單元儲存線性表的資料元素(這組儲存單元可以是連續的,也可以是不連續的)。因此,為了表示每個資料元素 與其直接後繼資料元素之間的邏輯關係,對資料元素來說,除了儲存其本身的資訊之外,還需儲存一個指示其直接後繼的資訊(即直接後繼的存儲位置)。由這兩部分資訊組成一個"結點"(如概述旁的圖所示),表示線性表中一個資料元素。線性表的鍊式儲存表示,有一個缺點就是要找一個數,必須從頭開始找起,十分麻煩。

根據情況,也可以自己設計鍊錶的其它擴展。但是一般不會在邊上附加數據,因為鍊錶的點和邊基本上是一一對應的(除了第一個或最後一個節點,但是也不會產生特殊情況)。不過有一個特例是如果鍊錶支援在鍊錶的一段中把前和後指針反向,反向標記加在邊上可能會更方便。

對於非線性的鍊錶,可以參見相關的其他資料結構,例如樹、圖。另外有一種基於多個線性鍊錶的資料結構:跳表,插入、刪除和查找等基本操作的速度可以達到O(nlogn),和平衡二元樹一樣。

其中儲存資料元素資訊的域稱為資料域(設網域為data),儲存直接後繼儲存位置的域稱為指標域(設網域為next)。指標域中儲存的資訊又稱做指標或鏈。

由分別表示,,…,的N 個結點依次相鏈構成的鍊錶,稱為線性表的鍊式存儲表示,由於此類鍊錶的每個結點中只包含一個指針域,故又稱單鍊錶或線性鍊錶。

以上是鍊錶是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)