判断链表是否有环

  单链表会出现中间和结尾相连的情况,这样节点的head.next永远不会出现null,这样容易出现死循环,所以判断一个链表是否有环非常重要。

最简单的方法是设置两个指针,一个快指针,一个慢指针。快指针走两步,慢指针走一步。如果在两个指针不为null的情况下,两个指针会走到同一个节点,这就可以证明环的存在。

代码如下:

 1 public class HasCycle {
 2     public static boolean hasCycle(Node head){
 3         boolean flag = false;
 4         Node fast = head;
 5         Node slow = head;
 6         while(fast != null && slow != null){
 7             fast = fast.next.next;
 8             slow = slow.next;
 9             if(slow == fast){
10                 flag = true;
11                 break;;
12             }
13         }
14         return flag;
15 
16     }
原文地址:https://www.cnblogs.com/feimaoyuzhubaobao/p/10200037.html