采用双指针
(1)设置slow和fast两个指针,slow一次走一步,fast一次走两步。
(2)如果节点个数是奇数,那么直到fast->next为空时,slow指向中间节点。
(2)如果节点个数是偶数,那么直到fast为空时,slow指向中间节点。
代码为
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->next;
fast=fast->next->next;
}
return slow;
}