javascript实现 一种新的思路
链表中环的入口节点
http://www.nowcoder.com/questionTerminal/6e630519bf86480296d0f1c868d425ad
思路:从前往后遍历链表,将每个节点的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;
}