function ListNode(x) {
this.val = x;
this.next = null;
}
var head = new ListNode(-1);
var cur = new ListNode(1);
head.next = cur;
for (var i = 2; i < 5; i++) {
cur.next = new ListNode(i);
cur = cur.next;
}
function hasCycle(head) {
//console.log('head', head);
let p = head;
while (p !== null) {
let temp = p;
console.log(p, p.next);
p = p.next;
console.log(p.next);
if (p === undefined) return true;
temp.next = undefined;
//console.log('temp.next', temp.next);
}
return false;
}
console.log(hasCycle(head.next));
一开始是temp=p,temp和p指向同一个节点
之后 p=p.next 是让p指向下一个节点, 但temp没有动,还是指向原本的节点
这时p和temp指向不同的节点,temp.next=undefined。自然不会影响到p.next