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

如何通过递归方式反转一个循环链表?

递归反转循环链表的缺失代码补充

要完善这段递归反转循环链表的代码,缺失的一行是将当前节点的next指向原头节点head,这样在递归回溯时能正确构建反转后的节点指向,最终配合后续对head的调整完成循环链表的反转。

完整代码如下:

Node* reverseRecursive(Node* node)
{
    if(node->next == head ) {
        return node;
    }

    auto res = reverseRecursive(node->next);
    node->next->next = node;
    node->next = head; // 补充的缺失代码
    return res;
}

逻辑说明:

  • 递归终止条件:当当前节点的next指向原头节点head时,说明已遍历到原链表的尾节点,将其作为反转后的新头节点返回。
  • 递归回溯阶段:将当前节点的下一个节点的next指向自身,完成局部反转;同时将当前节点的next指向原头节点head,保证后续节点能正确链接到循环的“尾部”。
  • 收尾调整:调用该函数得到新头节点res后,需要执行head->next = res;,让原头节点(现在是反转后的尾节点)的next指向新头节点,形成完整的循环链表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:40:33