【发布时间】:2017-09-18 00:17:52
【问题描述】:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
ListNode newNode = null;
ListNode nxt = head.next;
head.next = newNode;
newNode = head;
head = nxt;
当我看到这个时,这是我想象的:
假设我有一个结构
其中-------> 表示指向(在内存中)
head -------> 1->2->3->4->5->6
那么这意味着
ListNode nxt = head.next -------> 2->3->4->5->6
那么当你这样做时:
head.next = newNode
head -------> 1->NULL
那么nxt不应该变成吗?
nxt -------> NULL
既然你改变了nxt指向的东西?
【问题讨论】:
-
但是你没有改变
nxt指向的东西。 -
nxt不指向head.next。head.next和nxt是指向同一个对象的单独引用。改变一个不会影响另一个。顺便说一句,为什么是newNode == NULL? -
用另一种方式表达——
=分配一个引用;它不会修改被引用的对象。 -
一个更简单的版本,如果这样说,
int x=5;和int y=x然后你做x=x+5,你可以检查y仍然等于5