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

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

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


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


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


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


876. 链表的中间结点


https://leetcode-cn.com/problems/middle-of-the-linked/submissions/


e16f95a030ed433ba50203fe9d565645.png


思路一:


遍历两遍


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


思路二:


快慢指针


c433b19ca95d41cdae7e42c24562fd38.png


执行方式


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


15febc88f8fd44a4b7f73c3414ec348f.png


判断条件


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


结果


1.奇数:


有中间确定的中间结点


fc1df9a5937f44e69cbb4fd962b0d450.png


2.偶数:


没有中间确定的中间结点


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


b79fbdf84b5f4b1eb73f77956b126094.png


代码:


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;
}


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

相关文章
|
22天前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
31 1
|
7天前
|
存储 C语言
【数据结构】手把手教你单链表(c语言)(附源码)
本文介绍了单链表的基本概念、结构定义及其实现方法。单链表是一种内存地址不连续但逻辑顺序连续的数据结构,每个节点包含数据域和指针域。文章详细讲解了单链表的常见操作,如头插、尾插、头删、尾删、查找、指定位置插入和删除等,并提供了完整的C语言代码示例。通过学习单链表,可以更好地理解数据结构的底层逻辑,提高编程能力。
32 4
|
28天前
|
存储 缓存 C语言
C语言:链表和数组有什么区别
C语言中,链表和数组是两种常用的数据结构。数组是一种线性结构,元素在内存中连续存储,通过下标访问,适合随机访问且大小固定的情况。链表由一系列不连续的节点组成,每个节点存储数据和指向下一个节点的指针,适用于频繁插入和删除操作的场景,链表的大小可以动态变化。
|
7天前
|
C语言
【数据结构】双向带头循环链表(c语言)(附源码)
本文介绍了双向带头循环链表的概念和实现。双向带头循环链表具有三个关键点:双向、带头和循环。与单链表相比,它的头插、尾插、头删、尾删等操作的时间复杂度均为O(1),提高了运行效率。文章详细讲解了链表的结构定义、方法声明和实现,包括创建新节点、初始化、打印、判断是否为空、插入和删除节点等操作。最后提供了完整的代码示例。
24 0
|
29天前
|
C语言
无头链表再封装方式实现 (C语言描述)
如何在C语言中实现无头链表的再封装,包括创建节点和链表、插入和删除操作、查找和打印链表以及销毁链表的函数。
26 0
|
23天前
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
40 0
|
29天前
【LeetCode 46】450.删除二叉搜索树的节点
【LeetCode 46】450.删除二叉搜索树的节点
11 0
|
29天前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
72 0
|
29天前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
20 0
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行