簡體   English   中英

如何從 LinkedList 中刪除節點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM