题目描述:
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出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 }