我正在编写一个方法来交换链表中的相邻值,而我对于将值设置为彼此时会发生什么感到困惑。例如,假设我有一个链表,我想交换索引4和5的元素(比如列表有10个元素)。 如果我使用代码:
Node tempAt = getNode(4);
Node tempPost = getNode(5);
getNode(3).next = tempPost;
tempAt.next = tempPost.next;
tempPost.next = getNode(3);
这有用吗?基本上,我混淆了变量。当您将一个节点设置为等于另一个节点时(例如:Node temp = listHead
),temp是否与节点listHead基本相同?如果我修改listHead
,那么temp
也会被修改吗?
编辑:
另外,如果我创建的内容如下:Node temp = listHead
,然后更改listHead.next
的值,那么temp.next
的值是多少?
答案 0 :(得分:0)
在您的修改中,Node temp = listHead
。 temp
是一个保存listHead
值的变量。 listHead
有一个名为next的字段,它也是一个将值保存到另一个节点的变量。当您更改listHead.next
时,您要更改对象next
中字段listHead
的值,而temp
的值仍然是对象listHead
,所以当你说temp.next
时,它等于listHead.next
。
如果您想了解更多关于Java如何通过值传递的信息,可以阅读this article。