思路:从前往后遍历链表,将每个节点的next指向自己,然后当遍历到后面有节点的next为自己的话,就说明有环存在,然后我们将对应元素输出就可以。
这种方法的缺点是破坏了当前的链表结构,大家可以根据题意去选择方法。

function detectCycle( head ) {
    // 链表为空
    if(!head) return null;
    // 判断结束的情况有两种
    // 1.当前遍历到的元素指向了自己 说明有环 而且到了环的入口
    // 2.不存在环 但到了链表的尾部
    while(head.next!==head && head.next !== null){
        // 临时保存当前节点的下一个节点
        let p = head.next;
        // 将当前节点的next指向自己 方便我们后面判断有环
        head.next = head;
        // 把指针移到下一个节点
        head = p;
    }
    // 这里主要判断是由于找到环还是到了链表尾部而导致退出上面循环
    if(head.next == head) return head;
    else return null;
}