資料結構與演算法(4)雙向鍊錶

2021-10-06 20:05:48 字數 1715 閱讀 6924

1. 單鏈表的的缺點

(1)單向鍊錶查詢的方向只能是乙個方向,而雙向鍊錶可以向前或者向後查詢

(2)單向鍊錶不能自我刪除,需要考輔助節點,而雙向鍊錶則可以進行自我刪除

2. 雙向鍊錶的說明

(1)遍歷:和單向鍊錶一樣,只是可以向前,可以向後

(2)新增(預設新增到雙向鍊錶的最後)

(3)修改:和單向鍊錶思路一樣

(4)刪除

3. 雙向鍊錶的**實現

public

class

doublelinkedlistdemo

}class

doublelinkedlist

//遍歷雙向鍊錶

public

void

list()

//因為頭結點不能動,我們需要乙個輔助變數來遍歷

heronode2 temp = head.next;

while

(true

)//輸出節點資訊

system.out.

println

(temp)

; temp = temp.next;}}

//新增乙個節點到雙向鍊錶的最後

public

void

add(heronode2 heronode2)

temp = temp.next;

}//當退出while迴圈時,temp就指向了鍊錶的最後

//形成乙個雙向鍊錶

temp.next = heronode2;

heronode2.pre = temp;

}//修改節點的內容

public

void

update

(heronode2 newheronode)

//找到乙個需要修改的節點,根據no編號

heronode2 temp = head.next;

boolean flag =

false

;//表示是否找到該節點

while

(true)if

(temp.no == newheronode.no)

temp = temp.next;

}//根據flag判斷是否找到要修改的節點

if(flag)

else

}//刪除節點

public

void

del(

int no)

heronode2 temp = head.next;

boolean flag =

false

;//表示是否找到要刪除的節點

while

(true)if

(temp.no == no)

temp = temp.next;}if

(flag)

}else}}

//定義heronode2,每個heronode2物件就是乙個節點

class

heronode2

@override

public string tostring()

';}}

資料結構與演算法 鍊錶2 雙向鍊錶

雙向鍊錶結點和單向鍊錶結點的區別在於,多了乙個指向前驅的指標。當這個節點是第乙個節點時,前驅指標是乙個空指標。單向鍊錶的結構如下圖1所示 圖1 單向鍊錶結構圖 雙向鍊錶的結構如下圖2所示 圖2 雙向鍊錶結構圖 顯然通過以上2個圖的對比,可以看出鍊錶兩種形式的特點。雙向鍊錶顯然我們在建立的時候需要永久...

Java資料結構與演算法 五 雙向鍊錶

package com.fantj.datastruct.doublelistnode 雙向鍊錶,比雙端鍊錶多了乙個頭結點的指向 created by fant.j.2017 12 21 19 49 public class doublelinklist 插入乙個結點,在頭結點後進行插入 publi...

資料結構與演算法筆記(四 雙向鍊錶

前一篇 資料結構與演算法筆記 三 單鏈表 乙個完整的雙向鍊錶應該是頭結點的pre指標指為空,尾結點的next指標指向空,其餘結點前後相鏈。結點構成 建構函式 typedef struct lineline,a 分別表示該結點的前驅 pre 後繼 next 以及當前資料 data 建立 對於建立雙向鍊...