單向鍊錶he雙向鍊錶

2021-09-12 17:28:15 字數 1125 閱讀 9399

鍊錶(linked list)是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標(pointer)。

在電腦科學中,鍊錶作為一種基礎的資料結構可以用來生成其它型別的資料結構。鍊錶通常由一連串節點組成,每個節點包含任意的例項資料(data fields)和一或兩個用來指向上乙個/或下乙個節點的位置的鏈結(「links」)。鍊錶最明顯的好處就是,常規陣列排列關聯專案的方式可能不同於這些資料專案在記憶體或磁碟上順序,資料的訪問往往要在不同的排列順序中轉換。而鍊錶是一種自我指示資料型別,因為它包含指向另乙個相同型別的資料的指標(鏈結)。鍊錶允許插入和移除表上任意位置上的節點,但是不允許隨機訪問。鍊錶有很多種不同的型別:單向鍊錶,雙向鍊錶以及迴圈鍊錶。

鍊錶中最簡單的一種是單向鍊錶,它包含兩個域,乙個資訊域和乙個指標域。這個鏈結指向列表中的下乙個節點,而最後乙個節點則指向乙個空值。

乙個單向鍊錶包含兩個值: 當前節點的值和乙個指向下乙個節點的鏈結

乙個單向鍊錶的節點被分成兩個部分。第乙個部分儲存或者顯示關於節點的資訊,第二個部分儲存下乙個節點的位址。單向鍊錶只可向乙個方向遍歷。

雙向鍊錶

一種更複雜的鍊錶是「雙向鍊錶」或「雙面鍊錶」。每個節點有兩個連線:乙個指向前乙個節點,(當此「連線」為第乙個「連線」時,指向空值或者空列表);而另乙個指向下乙個節點,(當此「連線」為最後乙個「連線」時,指向空值或者空列表)

迴圈鍊錶

在乙個 迴圈鍊錶中, 首節點和末節點被連線在一起。這種方式在單向和雙向鍊錶中皆可實現。要轉換乙個迴圈鍊錶,你開始於任意乙個節點然後沿著列表的任一方向直到返回開始的節點。再來看另一種方法,迴圈鍊錶可以被視為「無頭無尾」。這種列表很利於節約資料儲存快取, 假定你在乙個列表中有乙個物件並且希望所有其他物件迭代在乙個非特殊的排列下。

指向整個列表的指標可以被稱作訪問指標。

用單向鍊錶構建的迴圈鍊錶

迴圈鍊錶中第乙個節點之前就是最後乙個節點,反之亦然。迴圈鍊錶的無邊界使得在這樣的鍊錶上設計演算法會比普通鍊錶更加容易。對於新加入的節點應該是在第乙個節點之前還是最後乙個節點之後可以根據實際要求靈活處理,區別不大(詳見下面例項**)。當然,如果只會在最後插入資料(或者只會在之前),處理也是很容易的。

單向鍊錶和雙向鍊錶區別 雙向鍊錶

一開始確實被這個雙向鍊錶整暈了,node裡面不停套node,簡直無限套娃,讓人不知道該怎麼下手。後來看了資料結構與演算法分析這本書的 才算整明白。我把鍊錶分成了三個部分 第一部分是node.node是乙個由兩根指標,以及我們需要儲存的資料構成的結構體。這個node就是無限套娃的起源,也是鍊錶用於儲存...

鍊錶(單向鍊錶,雙向鍊錶)

首先鍊錶是以節點的方式儲存資料的,每個節點包含資料域 data 節點域 next 鍊錶的每個節點在計算機中儲存的位置是不連續的和隨機的,優點就是資料的插入和刪除比較好,而查詢資料效率不是太好 因為鍊錶無法像靜態資料一樣隨機讀取資料,必須按照順序找到對應的資料為止 單向鍊錶就像是火車,所有的節點串聯成...

單向鍊錶和雙向鍊錶

1.單向鍊錶 單向鍊錶只可向乙個方向遍歷。查詢乙個節點的時候需要從第乙個節點開始每次訪問下乙個節點,一直訪問到需要的位置。也可以提前把乙個節點的位置另外儲存起來,然後直接訪問。2.雙向鍊錶 可以從任何乙個節點訪問前乙個節點,也可以訪問後乙個節點,以至整個鍊錶。一般是在需要大批量的另外儲存資料在鍊錶中...