C语言每日一题(25)链表的中间结点

2024-01-23 15:05:38 浏览数 (1)

力扣 876. 链表的中间结点

题目描述

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

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

思路分析

快慢指针法

用一慢一快指针遍历整个链表,每次遍历,快指针都会比慢指针多走一步,即快指针一次走两步,慢指针一次走一步。最后返回慢指针就是对应的中间结点了。

代码语言:javascript复制
struct ListNode* middleNode(struct ListNode* head) {
    struct ListNode* slow=head;
    struct ListNode* fast=head;
    while(fast&&fast->next)//结束条件
    {
        slow=slow->next;
        fast=fast->next->next;
    }
    return slow;
    
}

0 人点赞