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 建立 對於建立雙向鍊...