雙向鍊錶的使用

2021-10-10 06:45:21 字數 1997 閱讀 4596

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

2.單向鍊錶不能自我刪除,需要借助輔助節點,而雙向鍊錶,則可以實現自我刪除,所以,單鏈表刪除節點時,總是想找到temp節點,temp是待刪除節點的前乙個節點

2.1遍歷:

遍歷方法和單鏈表一樣,只是可以向前,也可以向後遍歷

2.2新增:

①先找到雙向鍊錶的最後這個節點

②temp.next = newheronode

③newheronode.pre = temp

2.3修改:

修改的思路和原理和單鏈表一樣

2.4刪除:

①因為是雙向鍊錶,可以實現自我刪除

②直接找到要刪除的節點

③temp.pre.next = temp.next

④temp.next.pre = temp.pre

**示例:

package com.wxit.linkedlist;

/** * @author wj

**/public

class

doublelinkedlistdemo

}//建立乙個雙向鍊錶的類

class

doublelinkedlist

//遍歷雙向鍊錶的方法

public

void

list()

//因為頭節點不能動,所以需要乙個輔助變數來遍歷

heronode2 temp = head.next;

while

(true

)//輸出節點資訊

system.out.

println

(temp)

;//將temp後移

temp = temp.next;}}

//新增

public

void

add(heronode2 heronode)

//沒有找到就將temp後移

temp = temp.next;

}//當退出while迴圈時,就是遍歷到鍊錶最後

temp.next = heronode;

heronode.pre = temp;

}//修改乙個節點的內容

public

void

update

(heronode2 heronode)

//如果不為空,根據id編號來修改

//定義乙個輔助變數

heronode2 temp = head.next;

boolean flag =

false

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

while

(true)if

(temp.id == heronode.id)

temp = temp.next;

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

if(flag)

else

}//從雙向鍊錶中刪除乙個節點

/** *

* @param id

* 說明:

* 1.對於雙向鍊錶,可以直接找到要刪除的這個節點

* 2.找到後,自我刪除即可

*/public

void

delete

(int id)

heronode2 temp = head.next;

boolean flag =

false

;while

(true)if

(temp.id == id)

temp = temp.next;

}//判斷flag

if(flag)

}else}}

//定義節點

class

heronode2

@override

public string tostring()

';}}

雙向鍊錶的使用

本文僅為筆者學習,如有錯誤之處懇請各位讀者指正 簡譯 你有一行盒子,從左到右依次編號為1,2,3,n。可以執行一以下4種指令 指令保證合法,即x不等於y。例如,當n 6時在初始狀態下執行1 1 4後盒子序列為2 3 1 4 5 6。接下裡執行2 3 5.盒子序列變成2 1 4 5 3 6.在執行3 ...

mysql 雙向鍊錶 雙向鍊錶

雙向鍊錶是鍊錶變型,相比於單鏈表導航或者是向前和向後的兩種方式。以下是重要的術語來理解雙向鍊錶的概念 link 鍊錶的每個鏈路儲存資料稱為乙個元素。linkedlist linkedlist包含連線鏈結到名為首先第乙個鏈結,並稱為最後的最後乙個鏈結 last 雙向鍊錶表示 按照如上圖中所示,以下是要...

mysql的引雙向鍊錶 雙向鍊錶

public classdoublelinkedlist else 新增至鍊錶尾 paramnode public voidaddlast doublenode node else 按照某屬性的順序新增 paramnode public voidaddbyorder doublenode node ...