快慢指针找链表的中间指针

给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。

思路:定义两个指针指向头节点,一个快指针一次走两个节点,一个慢指针一次走一个节点,当快指针走完后,慢指针指向的节点就是中间节点的位置(相对速度的思想)
快慢指针找链表的中间指针_第1张图片
代码:

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;

}

你可能感兴趣的:(链表,数据结构)