JZ55 链表中环的入口结点
链表中环的入口结点
题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
思路:这题需要知道a = c,然后head和slow每次走一步,相遇的时候就是第一个入口交点,需要注意应该写head != slow -> next,如果写成head == slow,在两个元素组成的环中就会死循环

func EntryNodeOfLoop(pHead *ListNode) *ListNode{
if pHead == nil{
return nil
}
slow, fast := pHead, pHead
for fast != nil && fast.Next != nil {
slow = slow.Next
fast = fast.Next.Next
if slow == fast {
break
}
}
if fast == nil || fast.Next == nil {
return nil
}
p := pHead
for p != slow && slow != nil{
p = p.Next
slow = slow.Next
}
return p
}

浙公网安备 33010602011771号