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

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

    for(p1=head;p1!=NULL,p2->next!=NULL;p3=p1,p1=p1->next)
    {
      if(p2->next->next==NULL)
          break;

         p2=p2->next->next;
        if(p1==p2)
        return true;

    }
        return false;
    }

        return false;
    // write code here
}