0

我正在编写一种方法来交换链表中的相邻值,我对将值设置为彼此相等时会发生什么感到困惑。例如,假设我有一个链表,并且我想交换索引 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多少?

4

1 回答 1

0

在您的编辑中,Node temp = listHead. temp是一个保存 的值的变量listHeadlistHead有一个名为 next 的字段,它也是一个变量,用于保存另一个节点的值。当你改变 的时候,你是在改变对象listHead.next中字段的值,而's值仍然是对象,所以你说的时候,就是等于。nextlistHeadtemplistHeadtemp.nextlistHead.next

如果您想了解更多关于 Java 如何按值传递的信息,可以阅读这篇文章。

于 2013-10-09T17:53:54.603 回答