> 文档中心 > 【C语言】876.链表的中间节点【LeetCode】

【C语言】876.链表的中间节点【LeetCode】


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

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

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

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

目录

思路一:

遍历两遍

先遍历一遍 记录链表长度 然后取半 再从前往后找中间值

思路二:

快慢指针

执行方式

判断条件

 结果

代码:

876.链表的中间结点https://leetcode-cn.com/problems/middle-of-the-linked-list/submissions/

思路一:

遍历两遍

先遍历一遍 记录链表长度 然后取半 再从前往后找中间值

思路二:

快慢指针

执行方式

慢指针一次走一步 快指针一次走两步

判断条件

只要 fast 活着 fast 的next 为NULL 就停止

 结果

1.奇数:

有中间确定的中间结点

2.偶数:

没有中间确定的中间结点

题中说如果是偶数返回第二个中间结点

代码:

struct ListNode* middleNode(struct ListNode* head){struct ListNode* fast,*slow;slow = fast = head;    while(fast&&fast->next)    { slow = slow->next; fast = fast->next->next;    }    return slow;}

做这类题还是得多画图呀!