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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript中链接列表和节点的问题相关的知识,希望对你有一定的参考价值。

我目前正在用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"

答案

你不应该覆盖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

以上是关于Javascript中链接列表和节点的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段内的列表视图打开链接网址?

javascript 用于在节点#nodejs #javascript内设置react app的代码片段

使用开发工具控制台中的 JavaScript 片段从 HTML 获取 YouTube 播放列表标题和频道名称

Javascript MVC 学习笔记 视图和模板

将对象列表打印为 vanilla javascript 中的链接

JavaScript 将片段附加到DOM而不是每个节点。