美文网首页
链表中环检测

链表中环检测

作者: Purson | 来源:发表于2020-02-26 10:56 被阅读0次
    //0表示不是环,1表示是环
    int isCycle(ListNode* head){
          if(head == NULL){
            return 0;   //空链表直接返回
          }
    
          ListNode* fast = head;
          ListNode* slow = head; //初始化快慢指针,同时在head初起跑
    
          while(fast != NULL && fast -> next != NULL){ 
    //当快指针走到NULL或者快指针的后继指针为空
    //肯定不是环了,因为没有机会追上慢指针
                  slow = slow -> next;             
                  fast = fast -> next -> next;       
          if(fast == slow){
                return 1;
          }
    }
       //为什么快指针追上慢指针放在后面,快慢指针先跑起来?
    //因为初始化状态它们是相等的,在同一起跑线,所以必须让它们跑起来,快指针追上才是环。
          return 0;
    }
    

    相关文章

      网友评论

          本文标题:链表中环检测

          本文链接:https://www.haomeiwen.com/subject/vkfmchtx.html