/**實現linkedlist
* 雙向迴圈列表
*/public
class
linkedlist
//如果位置等於鍊錶的長度,表示向鍊錶末尾新增。
if(index == size)
//先找到指定位置的節點
node next =
getnode
(index)
; node prev = next.prev;
//將next和prev指定為新新增的節點的前後節點
node node =
newnode
(e);
next.prev = node;
node.prev = prev;
prev.next = node;
node.next = next;
//如果新增的位置是0,則新新增的節點成為頭節點
if(index==0)
size++;}
/** * 返回指定位置的元素
* @param index 位置(從0開始)
* @return
*/public e get
(int index)
node node =
getnode
(index)
;return node.data;
}/**
* 刪除指定位置的元素
* @param index 位置
* @return 元素
*/public e remove
(int index)
//只有乙個元素
if(size ==1)
//找到要刪除的節點
node node =
getnode
(index)
;//找到上下的節點
node prev = node.prev;
node next = node.next;
//讓上下建立引用關係
prev.next = next;
next.prev = prev;
//如果刪除的是頭節點,需要將下乙個節點指定為頭節點
if(index ==0)
size --
;//返回刪除的元素
return node.data;
}private node getnode
(int index)
//下標》size/2
}else
}return node;
}//獲得鍊錶的長度
public
intsize()
@override
public string tostring()
stringbuffer buf =
newstringbuffer
("["
+head.data)
; node node = head.next;
while
(node!= head)
return buf.
("]").
tostring()
;}/** * 在鍊錶的末尾新增某個元素
* @param e 要追加的元素
* @return 新增成功返回true,失敗false
*/public
boolean
add(e e)
//如果鍊錶不為空,則將該元素新增到末尾
node node =
newnode
(e);
//先找到鏈尾(最後乙個節點)(3個以上更好理解)
node end = head.prev;
//將新節點新增到鏈尾(即重新建立新的引用關係)
end.next = node;
node.next = head;
head.prev = node;
node.prev = end;
size++
;return
true;}
/** * 節點類(內部類):
* 用於封裝要新增的元素
*/private
class
node
}}
資料結構 單鏈表 Linked List
include include define list init size 10 define listincrement 100 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define o...
資料結構 鍊錶(LinkedList)
三五七言 不要讓資料結構成為天花板 相關 位址 鍊錶是乙個線性結構,同時也是乙個天然的遞迴結構。鍊錶結構可以充分利用計算機記憶體空間,實現靈活的記憶體動態管理。但是鍊錶失去了陣列隨機讀取的優點,同時鍊錶由於增加了結點的指標域,空間開銷比較大。基本屬性 element當前節點的值 next下乙個節點 ...
資料結構 鍊錶結構分析(LinkedList)。
本人非常感謝!希望能和您共同學習,共同進步!下面介紹鍊錶的兩種結構 單向鍊錶 只能從頭遍歷到尾,或者從尾遍歷到頭。圖例 ele 每個節點中的元素。first 指頭部,鍊錶中第乙個元素。我們可以理解為,當拿到鍊錶物件,呼叫first 就可以得到第乙個元素。size 指元素的個數。或鍊錶的長度 1,索引...