题解 | #删除链表的倒数第n个节点#

删除链表的倒数第n个节点

https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

这个题目的坑点是被删除的节点是头节点~我的错误点哈哈

主要思路还是非常普通的,首先遍历整个链表序列,得到一共的节点数量,然后就可以知道倒数第k个节点具体是哪一个

然后就是判断,需要被删除的节点是否是头节点。

如果是头节点,则将head->next保存并且return,并且free(head)

如果不是头节点,则移动一个指针到被删除的节点的前一个,执行操作del_head->next = del_node->next,然后再free(del_node)即可。del_head就是被删除的节点的父节点,del_node就是被删除的节点。

不知道有没有大佬有更加便捷的方法~

struct ListNode* removeNthFromEnd(struct ListNode* head, int n ) {
    // write code here
    int cnt = 0; 
    struct ListNode* tran = head;
    while(tran!=NULL)
    {
        cnt++;
        tran = tran->next;
    }
    int del_pos = cnt - n;
    if(del_pos==0)
    {
        struct ListNode* output = head->next;
        free(head);
        return output;
    }
    else 
    {
        struct ListNode* del_head = head;
        for(int i=0;i<del_pos-1;i++)
        {
            del_head = del_head->next;
        }
        struct ListNode* del_node = del_head->next;
        del_head->next = del_node->next;
        free(del_node);
        return head;
    }
}

全部评论

相关推荐

06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务