用快慢指针法,fast一次走两步,slow一次走一步,当fast指向空或者fast的下一个为空时,此时的slow指向所求元素,直接返回即可。
struct ListNode* middleNode(struct ListNode* head){
struct ListNode* slow=head;
struct ListNode* fast=head;
while(fast&&fast->next)
{
fast=fast->next->next;
slow=slow->next;
}
return slow;
}