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;
}