私はJavaが初めてです。質問はそれほど明確ではないかもしれません。コードを使って説明しましょう。以下のコードは、リンクリストに値を出力する関数です。関数の 1 行目では、HeadNode 参照が指すオブジェクトと同じオブジェクトを指す参照を作成します。したがって、currentNode への変更は、HeadNode が指しているオブジェクトに影響します。ここで、while ループ内で currentNode を変更していますが、関数を終了した後、linkedList が変更されていないことがわかります。なんで?
static void PrintLinkedList(ListNode HeadNode)
{
ListNode currentNode = HeadNode;
while(currentNode != null)
{
System.out.println(currentNode.getData());
currentNode = currentNode.getNext();
}
}
アップデート:
この質問を持ち出す理由は、リンクリストを逆にする関数を実装したときに、次のコードが実行された後に tempNode が null になるためです。
static ListNode ReverseLinkedList(ListNode headNode)
{
ListNode headNodeTemp = headNode;
headNodeTemp.setNext(null);
ListNode tempNode = headNode.getNext(); //temp becomes null because headNode is changed. Why??
ListNode currentNode = headNodeTemp;
while(tempNode != null)
{...