【发布时间】:2021-10-14 22:44:55
【问题描述】:
编写了以下函数来合并两个链表:
var mergeTwoLists = function(l1, l2) {
current = l1.head;
if (current === null){
l1.head = l2.head; //Have to use l1.head instead of current since if we assign current again to l2.head the current will just start pointing to l2.head and lose reference to l1.
}
else{
while( current.next != null){
current = current.next;
}
current.next = l2.head;
}
return l1;
};
创建两个链表:
let l1 = new linkedlist();
let l2 = new linkedlist();
l1.insert(1);
l1.insert(2);
l1.insert(4);
l2.insertEnd(1);
l2.insertEnd(3);
l2.insertEnd(4);
现在我调用了两次函数:
let l3 = mergeTwoLists(l1,l2);
console.log(l3.show());
let l4 = mergeTwoLists(l1,l2);
console.log(l4.show())
第一个节目输出预期的 4 2 1 1 3 4。但是,第二个调用继续无限循环并继续输出 4 2 1 1 3 4 1 3 4 1 3 4 1 3 4 ...... ..
为什么会这样?
【问题讨论】: