java中链表的交换方法,其值会发生变化
我正在写一个方法来交换链表中的相邻值,我不知道当你将值设置为彼此相等时会发生什么。例如,假设我有一个链表,我想交换索引4和索引5处的元素(假设列表有10个元素)。 如果我使用代码:java中链表的交换方法,其值会发生变化,java,list,data-structures,linked-list,Java,List,Data Structures,Linked List,我正在写一个方法来交换链表中的相邻值,我不知道当你将值设置为彼此相等时会发生什么。例如,假设我有一个链表,我想交换索引4和索引5处的元素(假设列表有10个元素)。 如果我使用代码: Node tempAt = getNode(4); Node tempPost = getNode(5); getNode(3).next = tempPost; tempAt.next = tempPost.next; tempPost.next = getNode(3); 这行吗?基本上,我被变量搞混了。当您将
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相同吗?如果我修改列表头
,是否也会修改temp
?
编辑:
另外,如果我创建了如下内容:
Node temp=listHead
,然后更改listHead.next
的值,那么temp.next
的值是多少?在编辑中,Node temp=listHead
temp
是一个保存listHead
值的变量listHead
有一个名为next的字段,它也是一个保存另一个节点的值的变量。当您更改listHead.next
时,您正在更改对象listHead
中字段next
的值,并且temp
的值仍然是对象listHead
,因此当您说temp.next
时,这等于listHead.next
如果您想更多地了解Java是如何通过值传递的,您可以阅读。这有用吗?->好吧,试试看。
这个有用吗?
为什么不试试呢?代码只是为了说明我的意思。我最困惑的是文章的最后一部分(编辑)