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

递归反转链表代码超时(TLE)问题:我的实现哪里出错了?

反转链表递归实现的超时问题分析

你的代码存在两个核心错误,直接导致了超时(TLE):

  • 链表成环,引发无限遍历
    递归处理时,你仅将p->next指向当前head,但未把原head->next置为NULL。举个例子,原链表是1->2->3,递归到最后一层返回3,随后将3->next设为2;接着返回2,把2->next设为1,但此时1->next仍指向2,形成了1<->2<->3的环。测试用例遍历结果链表时会陷入无限循环,最终触发超时。

  • 递归返回值错误
    反转链表的递归实现中,每一层递归应返回反转后的新头节点(即原链表的尾节点),但你的代码每次返回当前的head(原链表的当前节点)。最终函数返回的是原链表的头节点,而该节点已处于环中,进一步加剧了遍历的无限循环问题。

修正后的代码如下:

struct ListNode* reverseList(struct ListNode* head) {
    if(head == NULL || head->next == NULL) return head;
    struct ListNode* newHead = reverseList(head->next);
    head->next->next = head;
    head->next = NULL;
    return newHead;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:48:10