给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。

示例:
输入:[1,2,3,4,5]
输出:此列表中的结点 3
输入:[1,2,3,4,5,6]
输出:此列表中的结点 4
解题思路:
快慢指针法,让快指针走两步慢指针走一步,当个数为奇数时,
fast->next==NULL,当为偶数时fast == NULL。

在这里插入图片描述

typedef struct ListNode Node;
struct ListNode* middleNode(struct ListNode* head){
    Node* slow = head;
    Node* fast = head;

    while(fast != NULL && fast->next != NULL)
    {
        slow = slow->next;
        fast = fast->next->next;
    }
    return slow;
}
发布了37 篇原创文章 · 获赞 0 · 访问量 1323

猜你喜欢

转载自blog.csdn.net/smilevampire/article/details/104071222