資料結構 鍊錶結構分析(LinkedList)。

2021-08-29 23:00:47 字數 2790 閱讀 7783

本人非常感謝!希望能和您共同學習,共同進步!

下面介紹鍊錶的兩種結構:

單向鍊錶:只能從頭遍歷到尾,或者從尾遍歷到頭。

圖例:

ele:每個節點中的元素。

first:指頭部,鍊錶中第乙個元素。

我們可以理解為,當拿到鍊錶物件,呼叫first()就可以得到第乙個元素。

size:指元素的個數。(或鍊錶的長度-1,索引從0開始),在集合中沒有length一說。陣列中的length相當於集合框架中的size

模擬**為:

//單向鍊錶 

class node

}

雙向鍊錶:可以從頭遍歷到尾,也可以從尾遍歷到頭。我們可以理解為,雙向鍊錶其實就是兩個單向鍊錶的合成。只不過是乙個從頭到尾,乙個從尾到頭。圖例:

node first:拿到第乙個節點

node last:拿到最後乙個節點。

模擬**:

//模擬雙向鍊錶**

class node

}

基於鍊錶的實現**:

//基於雙向鍊錶的集合

/***具體操作**請參見linkedlist原始碼

*這裡不作具體實現

*/pub11c class mylinkedl1st

}

總結:對於鍊錶操作,無疑是雙向鍊錶功能更強大。而雙向鍊錶在取頭和尾的時候速度更快。

對於鍊錶linkedlist的具體實現,我們仔細讀原始碼可以得出:

刪除操作上,鍊錶結構相對於陣列結構要更快。

為什麼呢?

陣列每次進行刪除操作都要進行移位與遍歷。當某個元素被刪除時,後面的元素要向前補位。最後乙個元素設為null,

然後再刪除最後乙個元素所佔的記憶體空間。  

鍊錶的刪除操作演算法分析:

刪除(first也可當做current)即第乙個節點時,把下乙個節點的next賦給第乙個節點的next。把第乙個節點的prev設為null;

刪除最後乙個節點時,把最後乙個節點的prev賦給當前物件的last,再把current節點的上乙個(prev)節點的next設為null;

刪除中間(此處中間節點指將要被刪除的節點current)節點時,把current節點的next賦給current節點的上乙個節點的next。

再把current節點的prev賦給current節點的下乙個節點的prev。

下面給出具體實現**:

前文說過,linkedlist在向頭和尾新增元素時,效能更優。下面給出具體實現**及**分析:

在向頭部新增元素時演算法實現:

把新增之前第乙個節點設為新增節點的next節點,然後把新增節點作為之前第乙個節點的上乙個節點。(或換種說法:把之前第乙個節點的上乙個節點作為新增節點),再把新增節點作為第乙個節點。而新增節點的prev最好設定為null

向尾部新增元素演算法實現:

把新增節點作為之前最後乙個節點的next節點,再把之前最後乙個節點作為新增節點的上乙個節點。

再把物件的last屬性設定為新增節點即可。

1):增操作:

雙向鍊錶可以直接獲取自己的第乙個和最後一乙個節點,

如果新增的元素在第乙個或最後一 個位置,那麼操作只有1次.

2):刪除操作(removefisrt,removelast):

如果刪除第乙個元素:操作一一次.如果操作最後乙個元素:操作一次如果刪除中間的元素:

找到元素節點平均操作:(1+n)/2次.找到節點之後做刪除操作: 1次

3):查詢操作:

平均:(n+1)/2次

4):修改操作:

平均:(n+1)/2+1次

基於前文(arraylist效能分析),我們可以得出arraylist和linkedlist的各自優異之處。

基於陣列的列表和基於鍊錶的列表的效能對比:

arraylist:查詢,更改較快,新增和刪除較慢

linkeduist查詢更改較慢,新增和刪除較快

資料結構 鍊錶

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

資料結構 鍊錶

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

資料結構 鍊錶

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