Big_rice_cooker 2023-12-21 12:11 采纳率: 0%
浏览 9

刷题遇到的一些问题,求解答


struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
    typedef struct ListNode L;
    L *fast,*slow;
    L *cur=(L*)malloc(sizeof(L));
    cur->next=head;
    fast=head;
    slow=cur;
    for(int i=0;i<n;i++)
    {
        fast=fast->next;
    }
    while(fast!=NULL)
    {
        fast=fast->next;
        slow=slow->next;
    }
    L*s=slow->next;
    slow->next=s->next;
    free(s);
    return cur->next;
}

19. 删除链表的倒数第 N 个结点
问一下各位为什么这道题目最后不能直接return head;只能先head=cur->next再return head,头节点不是全程没有变过吗

  • 写回答

1条回答 默认 最新

  • 小孟多 2023-12-22 11:12
    关注

    在上述代码中,最后不能直接 return head 的原因是,在函数内部创建了一个额外的指针 cur,并将其指向了头结点。通过遍历链表,将 cur 移动到倒数第 n 个位置。然后,通过修改 slow->next 来删除倒数第 n 个结点。
    如果直接返回 head,那么函数外部将无法获取到修改后的链表,因为 head 仍然指向原始的头结点。通过将 head 更新为 cur->next,可以确保函数外部获得的是修改后的链表的头结点。
    这样做的目的是为了保持链表的一致性和正确性,以便在函数外部使用修改后的链表。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月21日

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题