leetcode:链表的中间结点

1.题目描述

题目链接:876. 链表的中间结点 - 力扣(LeetCode)

我们先看题目描述:

leetcode:链表的中间结点_第1张图片

leetcode:链表的中间结点_第2张图片

leetcode:链表的中间结点_第3张图片 

2.解题思路

我们用画图用快慢指针来解决这个问题

定义一个快指针fast,一个慢指针slow

leetcode:链表的中间结点_第4张图片

快指针一次走两个结点,慢指针一次走一个结点

当快指针指向NULL或者快指针的下一个结点指向NULL的时候,慢指针刚好走到中间结点

leetcode:链表的中间结点_第5张图片

leetcode:链表的中间结点_第6张图片

有了这个思路呢,那我们就可以开始写代码了

3.代码

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

结果就是通过咯

leetcode:链表的中间结点_第7张图片

你可能感兴趣的:(#,刷题,leetcode,链表,算法)