我是java新手。这个问题可能不是那么清楚。让我用代码解释一下。下面的代码是一个打印出链表中值的函数。函数的第一行创建一个引用,指向 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 在执行以下代码后变为空:
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)
{...