算法篇—链表的中间节点

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:

输入:head = 1,2,3,4,5

输出:3,4,5

解释:链表只有一个中间结点,值为 3 。

示例 2:

输入:head = 1,2,3,4,5,6

输出:4,5,6

解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

解题分析:

可以创建两个指针slow和fast都指向head,slow每次走一步,fast每次走两步,如果是奇个链表,那么fast走到最后一个链表停止,如果是偶个链表,fast将走到NULL!

c 复制代码
struct ListNode* middleNode(struct ListNode* head) {
    if(head==NULL)
   		return NULL;
    struct ListNode*slow=head;
    struct ListNode*fast=head;
    while(fast&&fast->next)//只要是其中的一个就停止,表示slow走到终点了
    {
        slow=slow->next;
        fast=fast->next->next;
    }
    return slow;//返回slow(中间的节点)
}
相关推荐
晚风醉蝶15 分钟前
1-6-插入排序-InsertionSort
java·数据结构·排序算法
Tyler_TXZ23 分钟前
C++C语言之——二叉树
c语言·开发语言·数据结构·c++·二叉树
Tisfy33 分钟前
LeetCode 3090.每个字符最多出现两次的最长子字符串:二重循环 / 滑动窗口
算法·leetcode·字符串·题解·模拟·双指针·滑动窗口
-dzk-33 分钟前
【技巧】LC 136.只出现一次的数字
算法·异或
小羊先生car34 分钟前
F429-HAL-RS485(回环/双机实验)(2026/8/16)
c语言·单片机·嵌入式硬件·软件构建
专注仿真1 小时前
问答大模型技术方案算法实现-RAPTOR树构建算法与BEG集成使用
python·算法
zlinear数据采集卡2 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
白狐_7983 小时前
408 数据结构|线索二叉树两题详解:先序线索化后的空链域 + 中序前驱/后继判断
c语言·数据结构·链表
GeekZHR3 小时前
C语言指针进阶补充6:动态内存管理、mem系列内存函数、复杂指针声明,一次补齐指针的“三大盲区“
java·c语言·算法·指针
Herbert_hwt3 小时前
第七章 Java深入理解枚举类型
java·开发语言·算法