Javascript中链接列表和节点的问题

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

我目前正在用Javascript编写代码,我是新手,我需要帮助我的代码。我想创建一个包含节点(显然)的树,它指向链接列表,此列表将包含节点子节点。链接列表外我唯一需要的节点是我的根节点。

无论如何,我的问题是将节点添加到我父节点的链接列表中。例:

Root - > LinkedList(Node-> Node-> Node-> null)每个都指向另一个Linked List。

当我尝试在链接列表中添加节点时,我的第一个节点被覆盖。

码:

var list = new LinkedList();
var rootnode = new Node("Root");
list.add(rootnode, 20);
list.add(rootnode, "Como");
list.add(rootnode, "Estas");
list.add(rootnode, "ggg");
list.print(rootnode);

function LinkedList() {
  this.first = null;
  this.add = LinkedListAdd;
  this.print = LinkedListPrint;
  this.search = LinkedListSearch;
}

function Node(value) {
  this.value = value;
  this.next = null;
  this.child = new LinkedList();
}

function LinkedListAdd(node, item) {
  if (!node.child.first) {
    node.child.first = new Node(item);
  } else {
    while (node.child.first.next) {
      node.child.first = node.child.first.next;
    }
    node.child.first.next = new Node(item);
  }
}

打印我的rootnode.child.first给了我:"Estas"

javascript node.js linked-list
1个回答
1
投票

你不应该覆盖node.child.first,而是取一个局部变量:

    let acc = node.child.first;
    while(acc.next) acc = acc.next;
    acc.next = new Node(item);

提示:您可以使用LinkedListAdd访问this中的LinkedList,这样您就可以实现:

 root.children.add(10);

那么你不需要这个不必要的list

© www.soinside.com 2019 - 2024. All rights reserved.