gpt4 book ai didi

javascript - Javascript 中链表和 Node 的问题

转载 作者:行者123 更新时间:2023-11-30 19:43:05 26 4
gpt4 key购买 nike

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

无论如何,我的问题是将一个 Node 添加到我父亲 Node 的链表中。示例:

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

当我尝试在链表中添加一个 Node 时,我的第一个 Node 被覆盖了。

代码:

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

提示:您可以使用 this 访问 LinkedListAdd 中的 LinkedList,这使您可以做到这一点:

 root.children.add(10);

那么你就不需要这个不必要的list了。

关于javascript - Javascript 中链表和 Node 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55201426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com