【发布时间】:2019-08-19 18:51:24
【问题描述】:
我正在尝试合并两个链表,但由于某种原因它说它无法读取 null 的值 - 当我的值被定义时。
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class LinkedList {
constructor() {
this.head = null;
this.length = 0;
}
add(value) {
var node = new Node(value);
var current;
if (this.head == null) {
this.head = node
} else {
current = this.head
while (current.next) {
current = current.next;
}
current.next = node
}
this.length++
}
}
function mergeLinkedList(l1, l2) {
let newList = new LinkedList()
let currentNode1 = l1.head
let currentNode2 = l2.head
while (currentNode1 || currentNode2) {
if (currentNode1.value <= currentNode2.value) {
newList.add(currentNode1)
newList.add(currentNode2)
} else {
newList.add(currentNode2)
newList.add(currentNode1)
}
currentNode1 = currentNode1.next
currentNode2.head = currentNode2.next
}
return newList
}
let l1 = new LinkedList()
l1.add(1)
l1.add(2)
l1.add(4)
let l2 = new LinkedList()
l2.add(1)
l2.add(3)
l2.add(4)
mergeLinkedList(l1, l2)
这应该返回一个新的链表1->1->2->3->4->4,但在执行此 if 语句时会返回错误:if (currentNode1.value <= currentNode2.value) 说明它无法读取 null 的属性“值”,但该值在此处明确定义.
【问题讨论】:
-
请添加一些示例输入和输出。
-
@JackBashford 更新了输入和输出