鏈表介紹

鏈表介紹

鏈表與順序表一樣,也屬於線性表。

一個線性表是某類數據元素的一個集合,表裏同時記錄着元素之間的順序關係。

線性表的數據之間有順序關係,順序關係分爲兩種,一種是物理有序,即數據物理存儲的位置順序與數據之間的順序關係一致,另一種是邏輯有序,即數據之間的順序關係是由某種邏輯關係(如指針)來決定的,與物理存儲的位置無關。

順序表是物理有序,而鏈表是邏輯有序。

一、鏈表簡介

鏈表(Linked list)是一種線性表,鏈表中的數據存儲在一個個的節點裏,節點不一定是連續存儲的,在每一個節點中,除了存儲數據以外,還會存儲下一個節點的位置信息(內存地址),根據此位置信息(鏈接)可以找到下一個節點。

在鏈表的每一個節點中,分爲不同的存儲區域,信息域(元素域)和鏈接域(引用域)。

信息域用來存儲該節點中具體保存的數據。

鏈接域用來存儲指向的節點的位置信息(內存地址)。

鏈表的“頭”指向第一個節點,第一個節點是鏈表的頭節點(首節點),從頭節點出發,可以依次找到鏈表中的所有節點。

節點是分散存儲的,每個節點的鏈接域都可以指向空,將這些節點鏈接成一個鏈表,就是從頭節點開始,鏈接域依次指向下一個節點,形成一個鏈。

二、鏈表的分類

1. 單向鏈表

最簡單的鏈表是單向鏈表。

單向鏈表也叫單鏈表,是鏈表中最簡單的一種形式,它的每個節點包含兩個域,一個信息域和一個鏈接域。鏈接域指向鏈表中的下一個節點,而最後一個節點的鏈接域指向一個空值。

2. 雙向鏈表

雙向鏈表又稱雙面鏈表,相對於單向鏈表,雙向鏈表除了向後的鏈接域,還有向前的鏈接域。

每個節點包含三個域,一個信息域和兩個鏈接域。一個鏈接域指向前一個節點,當此節點爲第一個節點時,指向空值,另一個鏈接域指向下一個節點,當此節點爲最後一個節點時,指向空值。

3. 單向循環鏈表

單向循環鏈表是將單向鏈表“首尾相連”。

單向鏈表中最後一個節點的鏈接域指向的是空,而單向循環鏈表中,最後一個節點的鏈接域指向鏈表的頭節點,形成一個“環形”的鏈。

三、鏈表與順序表的對比

順序表是物理有序的,順序表的構建需要申請連續的存儲空間,在進行擴容時又需要進行數據的遷移,所以使用起來並不是很靈活。

鏈表是邏輯有序的,每個節點都可以單獨存儲,可以充分利用計算機內存空間,實現靈活的內存動態管理。但是,由於鏈表增加了結點的鏈接域(指針),空間開銷比較大。

順序表可以根據內存地址的關係(索引)快速讀取到任意位置的數據。

鏈表不能快速地訪問到指定數據,必須從頭節點開始尋找。

除此之外,因爲順序表和鏈表的不同結構,對它們進行添加、刪除數據等操作的原理不同,耗時也不同。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章