You need to enable JavaScript to run this app. C语言ReverseRange反转链表指定范围仅输出单节点问题求助
优惠活动
大模型
产品
解决方案
定价
更多

C语言ReverseRange反转链表指定范围仅输出单节点问题求助

问题根因

问题核心出在ReverseRange函数的指针操作逻辑上:

  • 你在函数内将传入的头指针*H赋值给了局部变量Head,调用Reverse(&Head)之后,仅修改了这个局部变量的指向,没有把反转后的新头节点回写到传入的指针地址*H中。
  • 执行Reverse操作时,原链表的第一个节点Q的next已经被置为NULL,但原链表头指针还是指向Q,所以打印时只会输出单个Q节点。

修复方案

只需要在ReverseRange中调用Reverse的逻辑后,把局部Head的值回写到*H即可:

if (x == 1 && y == LengthRec(Head)) {
    Reverse(&Head);
    *H = Head; // 新增这行,把反转后的新头回写到原指针
    return 1;
}

另外补充:ReverseRange函数存在分支没有返回值的问题,当LengthRec(Head) < y时函数没有return,建议补充对应分支的返回值避免编译警告。

修复后运行输出

T      R       E       W       Q
 Q      W       E       R       T
 T      R       E       W       Q

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 20:54:08