node.next = node和node = node.next之间的区别

时间:2019-04-22 17:55:10

标签: c# linked-list

我现在在这两个代码之间有些困惑:

node = node.next;
node.next = node;

public class ListNode
    {
      public int val;
      public ListNode next;
      public ListNode(int x) { val = x; }
    }

似乎两者都可以正常工作,但是功能却不同。我不会混淆他们之间的关系,有人可以为我解释一下区别吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您没有提供太多上下文,但是可以说我们有以下LinkedList:a-> b-> c-> d-> e(字符表示ListNode,箭头是next属性)。

然后,我们有ListNode node变量当前指向列表内的节点c

(1)第一次分配node = node.next不会更改原始列表中的任何内容,而是会更改node的值。分配后,LinkedList停留在:a-> b-> c-> d-> e,node指向d

(2)另一个分配node.next = node更改列表。列表(d,e)的其余部分将被丢弃,并且c永远永远指向自身:a-> b-> c-> c-> c-> c-> c。node始终指向{{1 }}