⭐️ 往期相关文章
💫 链接1:leetcode 206.反转链表
 💫 链接2:leetcode 203.移除链表元素
 💫 链接3:数据结构-手撕单链表+代码详解
⭐️ 题目描述

 🌟 leetcode链接:链表的中间结点
1️⃣ 代码:
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
/*
    思路:快慢指针问题
        A 指针走一步
        B 指针走两步
        同样的距离当B指针走到结束 A指针就在中点位置
*/
struct ListNode* middleNode(struct ListNode* head){
    struct ListNode* slow = head;
    struct ListNode* fast = head;
    // 到终点有两种情况:
    //   - 奇数个:fast到最后一个位置
    //   - 偶数个:fast到NULL
    while (fast && fast->next) {
        slow = slow->next;
        fast = fast->next->next;
    }
    return slow;
}
 




















