JavaScript: 无法将第二个值添加到单链表

JavaScript: Can't add second value to singly linked list

我有以下包含值 [8,0,7] 的数组。我想为这些数组值构建一个单独的 linked 列表,以相同的顺序排序。

我为 linked 列表中的每个节点都有一个 ListNode 对象,其中包含值和 next link 到 linked列表。我构建 linked 列表的代码目前如下所示:

   for(let i=0; i<results.length; i++){
        console.log("n:",results[i])
        if(!result){
            result = new ListNode(results[i])
        }else{
            console.log("else",results[i])
            result.next = new ListNode(results[i]);
        }
    }

出于某种原因,结果 linked 列表仅添加 7 而不是 0

如果我没理解错的话,您希望通过单个引用按顺序 link ListNode 个对象,在这种情况下,您需要使用更新 result 引用最近 ListNode() 附加到 linked 列表,每次迭代:

/* Added to support code snippet */
function ListNode(value) {
  this.value = value;
  this.next = '';
}

/* Input data */
const results = [8, 0, 7];

/* Track the latest list node appended to the linked list (ie, the head) */
let result = "";

for (let i = 0; i < results.length; i++) {

  if (!result) {
    result = new ListNode(results[i])
  } 
  else {

    result.next = new ListNode(results[i]);
    
    console.log(`${result.value} -> ${result.next.value}`);
    
    /* Update result reference to newly appended list node */
    result = result.next
  }
}

 

另一种更简洁地表达这个 linking 过程的方法是 Array#reduce():

/* Added to support code snippet */
function ListNode(value) {
  this.value = value;
  this.next = '';
}

/* Reduce array to a linked list */
[8, 0, 7].reduce((prev, value) => {
  
  /* Create node for current value */
  const node = new ListNode(value);
  
  /* If previous node exists, link it to current node */
  if(prev) {
    prev.next = node;
    console.log(`${prev.value} -> ${node.value}`);
  } 
    
  /* Return current node which will be the "previous" on
  the next iteration */
  return node;
  
}, "");