2016-10-03 9 views
1

ノードを指定した単一のリンクリスト内のノードを削除するプログラムを作成しました。単一のリンクリストの途中でノードを削除する

public class Solution { 
    /** 
    * @param node: the node in the list should be deleted 
    * @return: nothing 
    */ 
    public void deleteNode(ListNode node) { 
     // write your code here 
     // if node.next==null, we cannot delete the current node without given the previous node 
     if(node == null || node.next == null) return; 
     ListNode next = node.next; 
     node.val = next.val; 
     node.next = next.next; 
     // I wonder if this link needs to be removed as well 
     next.next = null;   
    } 
} 

問題はかなり簡単です。我々はすでにノードを削除し、この行がなければ

 next.next = null;   

:しかし、多くのコードサンプルは、オンライン私が書いたこの行が含まれていません。その後、「次へ」は何も指していませんが、「次へ」はnext.nextを指しています。 next.next = nullを設定しないと、Javaガベージコレクタはこの削除されたノードを削除しますか?

+0

あなたは 'node'を削除したい、' next.next'は 'node.next.next'です。これは実際のノードの3番目のノードです。削除しないでください。 – 11thdimension

答えて

1

確かにそうです。 gcはすべてのオブジェクトを繰り返し、他の誰かがそれを指しているかどうかをチェックします。そうでなければ、それは削除のためにマークされる。

関連する問題