我现在对这两个代码有点困惑:
node = node.next;
node.next = node;
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int x) { val = x; }
}
似乎它们都以某种方式运行良好,但以不同的方式运行。我不会混淆它们,有人可以为我解释一下区别吗?
谢谢
您没有提供太多上下文,但假设我们有以下 LinkedList:a->b->c->d->e(字符表示 ListNodes,箭头是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
保持指向c
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句