[英]How to remove node from LinkedList?
如何通過更改當前節點指向的位置從 LinkedList 中刪除節點? 這是我到目前為止所擁有的:
public void remove(Node newNode){
Node current = newNode;
while(current.getNext() != null){
if(current.getNext() == newNode){
//link the two nodes somehow
}
current = current.getNext();
}
}
所以,鏈表是一堆相互指向的節點,最后一個節點什么都不指向:
[0]-> [1]-> [2]-> [3]-> [4]-> [5]-> x
每個“指針”都歸其左邊的節點所有,所以它實際上有點像
n0 = {v: 0, p: n1}
n1 = {v: 1, p: n2}
n2 = {v: 2, p: n3}
n3 = {v: 3, p: n4}
n4 = {v: 4, p: n5}
n5 = {v: 5, p: null}
因此,要從列表中刪除值 3,您實際上想要更新n2
的指針以指向n4
而不是n3
。
if (current.next().value() == toRemoveValue) {
Node temp = current.next();
current.setNext(temp.next());
return;
} else {
current = current.next()
}
但要小心值根本不在列表中的情況,在某些時候, current.next()
可能會返回 null,然后current.next().value()
將拋出 NullPointerException。 你應該在這發生之前返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.