1.为什么不能用while{},而是用do{}while,因为初始化fast=slow,所以不会进入循环 2.为什么加上if(fast==null||fast.next==null) { return null; //由于如果fast指向空指针说明链表不是一个环。 }

public class Solution {

public ListNode EntryNodeOfLoop(ListNode pHead) {
    //使用快慢指针
    
    ListNode fast=pHead;
    ListNode slow=pHead;
   do
    {
       if(fast==null||fast.next==null)
       {
           return null;
       }
        fast=fast.next;
        fast=fast.next;
        slow=slow.next;
    } while(fast!=slow);
    fast=pHead;
    while(fast!=slow)
    {
        fast=fast.next;
        slow=slow.next;
    }
    return fast;
}

}