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

输入:head = 1,2,3,4,5
输出:3,4,5
解释:链表只有一个中间结点,值为 3 。
示例 2:

输入:head = 1,2,3,4,5,6
输出:4,5,6
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。
解题分析:
可以创建两个指针slow和fast都指向head,slow每次走一步,fast每次走两步,如果是奇个链表,那么fast走到最后一个链表停止,如果是偶个链表,fast将走到NULL!
c
struct ListNode* middleNode(struct ListNode* head) {
if(head==NULL)
return NULL;
struct ListNode*slow=head;
struct ListNode*fast=head;
while(fast&&fast->next)//只要是其中的一个就停止,表示slow走到终点了
{
slow=slow->next;
fast=fast->next->next;
}
return slow;//返回slow(中间的节点)
}