鍊錶資料結構

2021-08-21 11:41:47 字數 1175 閱讀 3421

鍊錶的資料結構是程式中最常用的資料結構,是乙個具體的資料型別,實現了很多的型別資料的集合

單鏈表的結構中很容易獲的乙個項的後繼項,不容易獲得乙個項的前驅項

雙鏈表的結構很容易獲得乙個項的後繼項和前驅項因為它是包含了兩個方向的鏈結

第二個外部的鏈結叫做尾部鏈結,它允許雙鏈表的結構的使用者直接訪問最後的一項

在每次插入和刪除資料的過程中,鍊錶結構會調整大小,並且不需額外的記憶體代價,也不需要複製資料項。

非連續性記憶體和節點

鍊錶結構中的基本單位表示的是節點,單鏈表的節點表示來如下的部分或者字段:

乙個資料項

雙鏈表中還包含了到結構中的前乙個節點的鏈結

python使用對物件的引用建立了節點和鍊錶的結構,在python中,任何變數都可以引用任何的內容,包含了none值,它意味著乙個空的鏈結,pytohn為每乙個新的節點提供了動態分配到非連續記憶體,並且物件不再被引用的時候,會自動的將記憶體返回給系統

使用單鏈表的節點類

節點變數會初始化為乙個新的none或者新的node物件

class node(object):

"""定義鍊錶中的節點類"""

def __init__(self,data,next=none):

self._data=data

self._next=next

node1=none

node2=node("a",none)

node3=node("b",node2)

node1沒有指向節點的物件

node2和node3指向所鏈結的物件

node2指向乙個物件,其下乙個指標為none

單鏈表的操作是遍歷、插入和搜尋。遍歷在時間上是線性的,並不需要額外的記憶體,建立乙個新的指標

搜尋對於單鏈表的搜尋是線性的,和陣列不同,鍊錶的結構不支援隨機的訪問。搜尋乙個排好好序的鍊錶結構,不能像是搜尋乙個排好序的陣列一樣高效

替換替換操作在平均的情況下,也是線性的

在開始和末尾插入都是常數的複雜度,與陣列不同

從開始處刪除和從末尾的刪除,都是線性的

在任何位置的插入和任意位置的刪除都是線性的

鍊錶的變體有帶啞頭節點的迴圈鍊錶結構也有雙鏈表結構

雙鏈表的結構,比單鏈表結構的長處:

1、給定的節點,向左移動到前乙個節點

2、直接移動到最後乙個節點

資料結構 鍊錶

鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...

資料結構 鍊錶

鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...

資料結構 鍊錶

一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...