Javascript link 列表指针
Javascript link list pointer
我试图通过实现我自己的 LinkedList 来理解 Javascript 的指针。 ListNode
class 看起来像这样:
function ListNode(val) {
this.val = val;
this.next = null;
}
然后我有一个函数来创建一个 LinkedList,其中的数字从 0 到 100:
function fillList() {
let output = new ListNode();
let curr = output;
for(let i = 0; i < 100; i++) {
if(curr) {
curr.val = i;
} else {
curr = new ListNode(i);
}
curr = curr.next;
}
return output;
}
问题出在return
之后,output
的值只有0
。这意味着 for
循环不起作用,尤其是当将 curr
移动到其 curr.next
并为其分配 ListNode
时。
我觉得逻辑没问题,怎么了?
Javascript 没有指针,也许您指的是在 Javascript 中对象始终是引用这一事实?所以 this.next
是对对象的引用。您可以像这样实现您的功能:
function fillList() {
let output = new ListNode();
let curr = output;
for (let i = 0; i < 100; i++) {
curr.val = i;
curr.next = new ListNode();
curr = curr.next;
}
return output;
}
我试图通过实现我自己的 LinkedList 来理解 Javascript 的指针。 ListNode
class 看起来像这样:
function ListNode(val) {
this.val = val;
this.next = null;
}
然后我有一个函数来创建一个 LinkedList,其中的数字从 0 到 100:
function fillList() {
let output = new ListNode();
let curr = output;
for(let i = 0; i < 100; i++) {
if(curr) {
curr.val = i;
} else {
curr = new ListNode(i);
}
curr = curr.next;
}
return output;
}
问题出在return
之后,output
的值只有0
。这意味着 for
循环不起作用,尤其是当将 curr
移动到其 curr.next
并为其分配 ListNode
时。
我觉得逻辑没问题,怎么了?
Javascript 没有指针,也许您指的是在 Javascript 中对象始终是引用这一事实?所以 this.next
是对对象的引用。您可以像这样实现您的功能:
function fillList() {
let output = new ListNode();
let curr = output;
for (let i = 0; i < 100; i++) {
curr.val = i;
curr.next = new ListNode();
curr = curr.next;
}
return output;
}