メソッドの仕組みを理解するための助けが必要です。Javaリンクリスト内のノードへの参照
私はこのように定義された基本的なNode
クラスています
class Node {
Node next = null;
int data;
public Node(int d){
data = d;
}
}
今、私はこのdeleteDuplicates
メソッドが動作しているかで探しています。私は、各ノードを繰り返し通過してその値をセットに格納していることを理解しています。値がすでにセットに入っている場合は、前のノードのnext
ポインターを現在のノードをスキップするように設定していると思います。
public static Node deleteDuplicates(Node head){
Node n = head;
HashSet<Integer> set = new HashSet<Integer>();
Node previous = null;
while(n != null) {
if (set.contains(n.data)){
// skip this node
previous.next = n.next;
}
else {
set.add(n.data);
previous = n;
}
n = n.next;
}
return head;
}
私は、変数previous
とn
について困惑している:ここでの方法です。 previous = n;
と設定すると、同じオブジェクトを参照するようになっていませんか?同じオブジェクトを参照する場合、n
に変更すると、previous
と同じになります。だから、どのように行previous.next = n.next;
は機能しますか?
ありがとうございます!
に役立ち、以前は、このように前がNに設定された後、次のノードであり、nは削除部分について
n.nextあり、その次のノードに移動され'previous.next = n.next;' 'previous = n.next;'にするべきではありませんか? – c0der
@ c0derそれは問題ないですが、それでも参照用の質問は説明しません –
このメソッドが間違っていると思われますので尋ねます。 'previous'が' null'のときに 'previous.next'を使うのは一例です。 – c0der