题目描述:
解题思路:快慢指针
定义一个快指针和慢指针,快指针走一次走两步,慢指针一次走一步。
结束条件:当链表长度为奇数,快指针的下一个位置为空结束
当链表长度为偶数,快指针的位置为空结束
当快指针的下一个位置为空或者快指针的位置为空时,慢指针的位置即为中间结点。
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
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;
}