程序员代码面试指南 2.3:删除链表的中间节点

1、思路

  • 删除第K个节点,往前走K - 1步再跳过下一节点即可;

  • 要注意删除第一个节点的情况,所以声明了一个虚拟头结点。

2、代码

list_node * remove_kth_node(list_node * head, int K)
{
    if (head == nullptr || head->next == nullptr) return head;

    auto dummy = new list_node();
    dummy->next = head;                 //链表前面还有一个虚拟头结点

    while ( -- K > 0) dummy = dummy->next;
    dummy->next = dummy->next->next;    //跳过下一节点

    return head;
}

主要是为左程云的《程序员代码面试指南》这本书改写C++版的题解。

全部评论

相关推荐

12-27 22:29
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
12-27 22:36
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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