给定一个头结点为 head
的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
来源:力扣(LeetCode)
双指针
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* middleNode(struct ListNode* head)
{
struct ListNode *fast, *slow;
fast = head;
slow = head;
while (fast && fast -> next)
{
fast = fast -> next -> next;
slow = slow -> next;
}
return slow;
}