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

问题描述 投票:2回答:1

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

我对于链表中的每个节点都有一个ListNode对象,其中包含该值和一个指向链表中下一个节点的next链接。目前,我用于构建链接列表的代码如下:

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

由于某种原因,结果链接列表仅添加7,而不添加0

javascript singly-linked-list
1个回答
2
投票

[如果我的理解正确,您希望通过单个引用顺序链接ListNode对象,在这种情况下,您需要使用附加到链接列表的最新result更新ListNode()参考,每次迭代:

/* Added to support code snippet only */
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
  }
}

 

以更简洁的方式表达此链接过程的另一种方法是通过Array#reduce()

Array#reduce()
© www.soinside.com 2019 - 2024. All rights reserved.