/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */

/**
 * 
 * @param head ListNode类 
 * @return bool布尔型
 */
bool hasCycle(struct ListNode* head ) {
    struct ListNode * p1,*p2=head,*p3;
    if(head==NULL||head->next==NULL||head->next->next==NULL)
        return false;
    else {

    for(p1=head;p1!=NULL;p1=p1->next)
    {
      if(p2->next==NULL)
          break;
         p2=p2->next->next;
        if(p1==p2)
        return true;
 if(p2==NULL)
     break;
    }
        return false;
    }
 return false;

    // write code here
}