当前位置: 首页 > 知识库问答 >
问题:

Javascript中的链表和节点存在问题

白迪
2023-03-14

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

无论如何,我的问题是在我父亲节点的链接列表中添加一个节点。示例:

根-

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

代码:

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"

共有1个答案

易琛
2023-03-14

不应覆盖节点。小孩首先,取一个局部变量:

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

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

 root.children.add(10);

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

 类似资料:
  • 本文向大家介绍JavaScript中原型链存在的问题解析,包括了JavaScript中原型链存在的问题解析的使用技巧和注意事项,需要的朋友参考一下 我们知道使用原型链实现继承是一个goodway:)看个原型链继承的例子。 关系如下:b(实例) ->B.prototype = new A() -> A.prototype ->Object.prototype 可是在这种看似“漂亮”的继承方法中确存在

  • 我的问题是,如果用户输入一个姓氏,并且在链接列表中有多个相同的姓氏,并且其中一个姓氏在head节点中。如何在不删除头部节点的情况下删除另一个姓氏。我尝试了一些我能想到的方法,但是删除了所需的节点(这很好),包括头部节点(这不是我想要的…)

  • 本文向大家介绍C ++链表中节点的较小元素的总和,包括了C ++链表中节点的较小元素的总和的使用技巧和注意事项,需要的朋友参考一下 在这个问题中,我们得到了一个链表,链表的节点由两个值和一个指针组成。我们的任务是创建一个程序,以查找链表中节点的较小元素的总和。 在此,在链接列表中,我们有两个元素,分别是X和Y。程序将找到x和y的最小值。添加了来自所有节点的最小元素,这是必需的结果。 输入- 输出-

  • 我有一个基本的链表问题,我在下面试图解决。如果您能为我的方法、算法的正确性(甚至是编码风格)提供任何信息,我将不胜感激。该问题需要一个函数,该函数删除循环链表中所有出现的int,并返回列表中的任何节点或NULL(当列表为NULL时)。 以下是我目前掌握的一些C代码:

  • 这是我的remove函数,用于删除具有元素的节点。我得到了一个seg错误,我很确定这是因为temp->prev是前面的哨兵,所以从技术上来说,它不在双链表中。如果这是正确的,我实际上如何防止这种情况?如有任何帮助,不胜感激。 编辑:刚刚更新了代码,但仍然出现了Seg错误