文章目录
思路
one_step指针每轮循环向前走一步
 double_step指针每轮循环向前走两步
 double_step指针速度快于double_step指针
 double_step指针判断前面两步是否为null,若为空则说明无环形
 再判断前面两步是否与one_step指针相逢,若相逢说明有环形
代码
bool hasCycle(struct ListNode *head) {
    if(head==NULL) return false;
    struct ListNode *one_step=head,*double_step=head->next;
    bool ret = false;
    while(1){
        if(double_step==NULL || double_step->next==NULL) break;
        if(double_step==one_step || double_step->next==one_step){ ret=true;break;}
        one_step = one_step->next;
        double_step = double_step->next->next;
    }
    return ret;
}










