ちょうどノードの学習を開始しましたが、いくつか質問があります。ノードの移動、挿入、削除についての質問
private E number;
private Node next;
/**
* Constructor
*/
Node(E e){
number = e;
next = null;
}
と私はそうのように最初の名前の開始ノードとリンクされた一連のノードを持っている:のは、私はこのようになりますノードクラスを持っているとしましょう
最初 - >(1) - >(2 ) - >(3) - >(5) - >(6)リストを想定し
は、リストをトラバースし、空ではないので、同じように、私は何かをするだろう:
Node curr = first;
while(curr != null){
System.out.print(curr);
curr = curr.next;
}
は、私はあなたのことを理解しこのようなリンクリストを後方にトラバースすることはできませんこれは、私がcurr.nextを呼び出すたびに、以前の要素が失われていることを意味しますか?
私の最初のリストがcurrのような一時的なノードリストの影響を受けるのではないかと疑問に思っていましたか?たとえば、私は、挿入またはこれらに類似のコードをリスト上のノードを削除した場合:
インサート:
Node curr = first;
Node newNode = new Node(4);
while(curr != null){
if(curr.number == 3){
newNode.next = curr.next;
curr.next = newNode;
}
curr = curr.next;
}
削除:
Node curr = first;
Node parent = first;
while(curr != null){
if(curr.number == 3){
parent.next = curr.next;
}
parent = curr;
curr = curr.next;
}
上記のコードは最初の修正だろうか変更の挿入または削除が行われた後にfirst = curr;
を設定する必要がありますか?彼らが最初に変更を行う場合、どのようにcurr = curr.next;
が最初に変更されないのでしょうか?削除したノードを返却したい場合はどうすればよいですか?私はちょうどcurr.next = null;
のような何かをしてreturn curr;
をやりますか?
ありがとうございます!私はそれを得たと思う。それを参照するものが変更された場合、 'first'が変更されます。それ以外の場合は、変更が発生するように更新する必要があります。 –