题目描述
求链表的中间结点。如果链表中结点总数是奇数,返回中间结点;如果是偶数,返回中间结点的任意一个。
思路:同样可以定义两个指针pFast、pSlow,pFast一次走两步,pSlow一次走一步,当pFast走到尾部时,pSlow恰好走到中间结点。
public static ListNode midNode(ListNode head) {
if(head==null)
return null;
ListNode pFast=head;//一次走两步
ListNode pSlow=head;//一次走一步
while(pFast.next!=null&&pFast.next.next!=null){
pFast=pFast.next.next;
pSlow=pSlow.next;
}//end while
return pSlow;
}