1. 常规输入检查
  2. 让 head 一步步往前走,另定义一个 fast,两步两步往前走
  3. 如果 head 或者 fast 出现了 null, 说明无环, return false
  4. 如果 head 与 fast 相遇,则说明 有环, return true
bool hasCycle(struct ListNode* head ) {

    if (!head){
        return false;
    }

    struct ListNode* fast = head->next;

    for (int i = 0; i < 10000; i++){
        if (!fast || !(fast->next)){
            return false;
        }
        if (head == fast){
            return true;
        }
        head = head->next;
        fast = fast->next->next;
    }
    return true;
}