題目描述:
給一個鏈表,若其中包含環,請找出該鏈表的環的入口結點,否則,輸出null。
題目分析:
從上圖中可以看出,環的入口結點和其他結點的區別:環的入口結點是有兩個指針指向的,其他結點除了頭結點都是只有一個指針指向的,
使用斷鏈法,在當前結點訪問完畢后,斷掉指向當前結點的指針。因此,最后一個被訪問的結點一定是入口結點。
代碼實現:
1 /*
2 public class ListNode { 3 int val; 4 ListNode next = null; 5
6 ListNode(int val) { 7 this.val = val; 8 } 9 } 10 */
11 public class circle { 12 public ListNode EntryNodeOfLoop(ListNode pHead) 13 { 14 ListNode newHead=pHead; 15 ListNode preNode=newHead; 16 ListNode walkNode=newHead.next; 17 if (preNode == null || preNode.next == null){ 18 return null; 19 } 20 while(walkNode!=null){ 21 preNode.next=null; 22 preNode=walkNode; 23 walkNode=walkNode.next; 24 } 25 System.out.println(pHead.next); 26 System.out.println(preNode); 27 return preNode; 28 } 29 }