【C语言】链表中倒数第k个结点【牛客】

简介: 如果他只给你一个链表,或者k大于了链表的长度

大家好,欢迎来阅读子豪的博客(LeetCode刷题篇)


大家有什么宝贵的意见或建议可以在留言区留言


如果你喜欢我的博客,欢迎 素质三连 点赞 关注 收藏


我的码云仓库:补集王子 (YZH_skr) - Gitee.com


505a406ddb3542c482b176ca79439067.png


思路一:倒数第k个 就是顺数第n-k个


但是得遍历两遍


思路二:设置快慢指针


771fa7cd07d94d4c8e6007526569786f.png


让快指针先走k个,然后再同时走,直到fast到NULL


图表演示


3621010ebe4a4036bf1ee20ad3ed652d.png


fast走到空


002dc2b2d18f45a79532b79fd1be0321.png


其他问题


空指针问题


如果他只给你一个链表,或者k大于了链表的长度


解决方法:判断下fast,然后返回空


最终代码


struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) 
{
    struct ListNode* slow,*fast;
    slow = fast = pListHead;
    while(k--)
    {
        if(fast==NULL)
        {
            return NULL;
        }
        fast=fast->next;
    }
    while(fast)
    {
        slow=slow->next;
        fast=fast->next;
    }
    return slow;
}


始终记住图码结合

相关文章
|
6天前
|
C语言
对链表使用插入排序的C语言实现示例
对链表使用插入排序的C语言实现示例
|
6天前
19 删除链表的倒数第 N 个结点
19 删除链表的倒数第 N 个结点
|
6天前
|
存储 编译器 C语言
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
11 0
|
6天前
|
存储 Java
高效删除链表倒数节点最优实现
要删除链表的倒数第 n 个节点,并返回链表的头节点,我们可以使用一趟扫描的方法来实现。这个方法涉及使用两个指针:快指针和慢指针。
|
6天前
19. 删除链表的倒数第 N 个结点
19. 删除链表的倒数第 N 个结点
|
6天前
|
C语言
链表的插入、删除和查询—C语言
链表的插入、删除和查询—C语言
|
6天前
|
存储
三种方法实现获取链表中的倒数第n个元素
三种方法实现获取链表中的倒数第n个元素
15 0
|
6天前
【力扣】19. 删除链表的倒数第 N 个结点
【力扣】19. 删除链表的倒数第 N 个结点
|
6天前
|
存储 算法 C语言
C语言线性链表
【4月更文挑战第10天】C程序线性链表
21 0
数据结构|双向链表|带头结点|头插|尾插|尾删|头删
数据结构|双向链表|带头结点|头插|尾插|尾删|头删