C实现判断链表是否有环

//设置两个速度不同的指针同时从链表的第一个节点开始遍历链表,
//一个快指针p2每次移动两个节点,一个慢指针p1每次移动一个节点,
//若两个指针能相遇,则存在环。

  #include <stdbool.h>
  bool hasCycle(struct ListNode* head ) 
  {
   struct ListNode *p1=head, *p2=head;
   while((p2 != NULL) && (p2->next != NULL))
   {
    p1 = p1->next;
    p2 = p2->next->next;
    if(p1==p2) { return 1;}  
   }
    return 0;
 }

猜你喜欢

转载自blog.csdn.net/weixin_44910502/article/details/112461877