首页 >web前端 >js教程 >带有JavaScript的数据结构:单连锁列表和双关联列表

带有JavaScript的数据结构:单连锁列表和双关联列表

Lisa Kudrow
Lisa Kudrow原创
2025-03-13 12:52:11351浏览

带有JavaScript的数据结构:单连锁列表和双关联列表

本文探讨了单独且双重链接的列表,这是计算机科学中的两个基本数据结构。通常会误解这些结构,最好通过相关的类比来理解这些结构:寻宝游戏。

了解单连锁的列表

单连接的列表是一系列互连节点。每个节点都保存数据和一个指针,引用序列中的下一个节点。这反映了一个寻宝游戏:每个线索(节点)包含一个消息(数据)和指令(指针),导致下一个线索。整个线索序列形成了完整的狩猎。

单连接的列表操作

我们将检查NodeSinglyList (或在我们的情况下是DoublyList )构造函数的操作。

  • 节点:一个包含数据的基本构建块。
  • doublyList:
    • _length :跟踪节点的数量。
    • head :指向第一个节点。
    • tail :指向最后一个节点(与单连锁列表的关键区别)。
    • add(value) :添加一个新节点。
    • searchNodeAt(position) :在特定索引处找到一个节点。
    • remove(position) :删除特定索引的节点。

双关联列表实现

让我们在JavaScript中实现DoublyList

首先, Node构造函数:

类节点{
  构造函数(value){
    this.data = value;
    this.previous = null; //指向上一个节点的指针
    this.next = null; //指向下一个节点的指针
  }
}

DoublyList构造函数:

 class doublyList {
  constructor(){
    this._length = 0;
    this.head = null;
    this.tail = null;
  }
}

双关联列表方法

以下是add(value)searchNodeAt(position)remove(position)的实现,并修改为双向遍历。

add(value)

添加(value){
  const node = new node(value);
  if(this._length){
    this.tail.next = node;
    node.previous = this.tail;
    this.tail = node;
  } 别的 {
    this.head = node;
    this.tail = node;
  }
  this._length;
  返回节点;
}

searchNodeAt(position) :(与单连接的列表版本相同)

 searchNodeat(位置){
  // ...(实施保持不变)...
}

remove(position)

删除(位置){
  // ...(实施更为复杂,处理四种情况:无效的位置,卸下头部,卸下尾巴,删除中间节点。请参阅原始文章以获取详细的实现。)...
}

结论

本文使用了寻宝游戏类比,对单一和双重链接的列表进行了明确的解释。提供的JavaScript代码演示了双关联列表的实现,与单连锁列表相比,突出了关键差异和复杂性。请记住尝试代码以巩固您的理解。

以上是带有JavaScript的数据结构:单连锁列表和双关联列表的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn