链表中环的入口结点——牛客剑指offer


题目描述:

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM