手寫 LinkedList(雙向鍊錶)

2021-10-10 13:22:11 字數 3689 閱讀 3053

/**

* 用於 linkedlist 繼承

* * @param */

public

inte***ce

mylist

public

class

mylinkedlist

implements

mylist

/*** 1.00 將 element 作為最後乙個節點進行連線

** @param element

*/void

linklast

(e element)

else

//⑦ mylinkedlist 的大小(它包含的node數)+ 1

size++;}

/** * 2.01 判斷 add() 方法的 index 是否合法

** @param index : 要處理的索引值

*/private

void

rangcheckforadd

(int index)

}/**

* 2.02 判斷 index 是否合法

** @param index : 要處理的索引值

*/private

void

rangcheck

(int index)

}/**

* 2.03 在指定節點索引處返回(非空)節點, 如 : nodesucc.

** @param index : 要新增的節點位置

* @return : 返回位置為 index 的 node 節點

*/private node

node

(int index)

}else

}//返回位置為 index 的 node 節點

return x;

}/**

* 2.03 在非空節點 succ 之前插入節點資料 element

** @param element : 要插入的節點資料 element

* @param succ : 在 nodesucc 前插入節點

*/private

void

linkbefore

(e element, node

succ)

else

//⑦ mylinkedlist 的大小(它包含的node數)+ 1

size++;}

/** * 2.04 取消鏈結非空節點 x

** @param x : 要移除的 nodex 節點

* @return : 被移除的 nodex 節點的 element 資料

*/private e unlink

(node

x)else

//④ 如果 nodex 節點指向的下乙個節點為空節點, 即: 為尾節點

if(next == null)

else

//⑨ 將將要移除的 nodex 節點的 element 置為 null

x.element = null;

//⑩ mylinkedlist 的大小(它包含的node數)-1

size--

;// 返回被移除的 nodex 節點的 element

return element;

}/**

* 1.10 將指定節點追加到此列表的末尾

** @param element : 資料

* @return

*/@override

public

boolean

add(e element)

/** * 2.10 在此列表中的指定位置插入指定節點。

* 將當前位於該位置的節點(如果有)和右下的任何後續節點(向其索引新增乙個節點)移位。

** @param index : 要新增的節點位置

* @param element : 節點儲存的 element 資料

*/@override

public

void

add(

int index, e element)

else

}/**

* 2.11 獲取指定索引位置的節點儲存的 element 資料

** @param index : 要獲取的節點位置

* @return : 返回 node 節點中儲存的 element 資料

*/@override

public e get

(int index)

/** * 2.12 替換指定索引位置的節點

** @param index : 要替換的節點位置

* @param element : 要替換的 節點資料

* @return : 返回 被替換的 node 節點中的 element 資料

*/@override

public e set

(int index, e element)

/** * 2.13 移除指定索引位置的節點

** @param index : 要移除的節點位置

* @return : 返回 被移除的 node 節點中的 element 資料

*/@override

public e remove

(int index)

/** * 2.14 mylinkedlist 的大小(它包含的 node 數)

** @return : 返回包含的 node 數

*/@override

public

intsize()

/** * 2.15 清空 鍊錶

*/@override

public

void

clear()

//⑥ 將 頭節點和尾節點 都置為 null

head = tail = null;

//⑦ 將 mylinkedlist 長度置為 0

size =0;

}/**

* 0.00 鍊錶就是一系列儲存資料元素的單元通過指標串接起來形成的.

* * 雙向鍊錶中的每個節點除了要儲存它的下乙個節點物件的引用以外,

* 還會儲存乙個它前乙個節點物件的引用,這樣就可以實現雙向查詢資料.

** @param */

private

static

class

node

}@override

public string tostring()

sb.("]");

return sb.

tostring()

;}}

public

class

student

public

intgetid()

public string getname()

public string getaddress()

@override

protected

void

finalize()

@override

public string tostring()

';}}

public

class

test

}

手寫雙向鍊錶LinkedList的幾個常用功能

實現的功能如下 1 建立鍊錶 2 新增節點 預設新增和指定位置新增 3 訪問某乙個節點 4 刪除節點 5 獲得鍊錶的長度大小 6 判斷鍊錶是否為空 7 自定義鍊錶的列印格式 8 清空鍊錶 注意 要弄清楚節點的前赴 和 後繼,刪除時要注意賦值的順序!定義 鍊錶中 節點的類node public cla...

手寫雙向鍊錶LinkedList的幾個常用功能

實現的功能如下 1 建立鍊錶 2 新增節點 預設新增和指定位置新增 3 訪問某乙個節點 4 刪除節點 5 獲得鍊錶的長度大小 6 判斷鍊錶是否為空 7 自定義鍊錶的列印格式 8 清空鍊錶 注意 要弄清楚節點的前赴 和 後繼,刪除時要注意賦值的順序!定義 鍊錶中 節點的類node public cla...

鍊錶 Linked List(雙向鍊錶)

單鏈表與雙鏈表的區別 單向鍊錶,查詢的方向只能是乙個方向,而雙向鍊錶可以向前或者向後查詢。單向鍊錶不能自我刪除,需要靠輔助節點,而雙向鍊錶,則可以自我刪除,所以單鏈表刪除節點時,總是找到temp的下乙個節點來刪除的 雙鏈表doublelinkedlist 大部分 與單鏈表的例項相同 單鏈表例項 單擊...