You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

双向链表迭代疑问:单次while循环执行后的状态是否正确?

没问题,我帮你把内容整理成清晰的Markdown格式,顺便帮你验证第一次循环后的状态是否正确:

节点类定义

class Node { 
    public Node prev; 
    public int item; 
    public Node next; 
    public Node(Node p, int i, Node n) { 
        prev = p; 
        item = i; 
        next = n; 
    } 
}

待分析的双向链表反转代码

p = list;
while (p != null) { 
    q = p.next; 
    p.next = p.prev; 
    p.prev = q; 
    list = p; 
    p = q; 
};

初始双向链表状态

null <- 1 <-> 2 <-> 3 <-> 4 <-> 5 -> null

第一次循环后的状态验证

咱们一步步拆解第一次循环的执行逻辑:

  • 初始时p指向节点1(list初始指向节点1)
  • q = p.next:q被赋值为节点2(节点1原本的next)
  • p.next = p.prev:节点1的next被设为null(因为节点1的初始prev是null)
  • p.prev = q:节点1的prev被设为节点2
  • list = p:list现在指向节点1
  • p = q:p现在指向节点2

所以第一次循环后的正确状态是:

  • list:指向节点1,此时节点1的关系为 prev=节点2,next=null,整体链表结构为 null <- 1 <- 2 <-> 3 <-> 4 <-> 5 -> null
  • p:指向节点2
  • q:指向节点2

你之前描述的状态有点偏差,上面是修正后的准确状态~

内容的提问来源于stack exchange,提问作者Jordan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:29:36