资讯专栏INFORMATION COLUMN

Javascript与数据结构系列(三)——链表的实现

elina / 946人阅读

摘要:链表实现设计一个基于对象的链表我们设计的链表包含两个类。我们使用一个构造函数来创建节点该构造函数设置了这两个属性的值类类提供了对链表进行操作的方法。该类的功能包括插入删除节点在列表中查找给定的值。

链表实现

设计一个基于对象的链表 我们设计的链表包含两个类。

Node 类用来表示节点

LinkedList 类提供了插入节点、删除节点、显示列表元素的方法,以及其他一些辅助方法。

Node类

Node 类包含两个属性:element 用来保存节点上的数据,next 用来保存指向下一个节点的
链接。我们使用一个构造函数来创建节点,该构造函数设置了这两个属性的值:

 function Node(element) {
    this.element = element;
    this.next = null;
 } 
LinkedList类

LList 类提供了对链表进行操作的方法。该类的功能包括插入删除节点、在列表中查找给 定的值。该类也有一个构造函数,链表只有一个属性,那就是使用一个 Node 对象来保存该 链表的头节点。
该类的构造函数如下所示:

function LList() {
    this.head = new Node("head");
    this.find = find;
    this.insert = insert;                                  
    this.remove = remove;
    this.display = display;
}
代码归纳
function Node(element) {
  this.element = element;
  this.next = null;
}

function LList() {
  this.head = new Node("head");
  this.find = find;
  this.insert = insert;
  this.display = display;
  this.findPrevious = findPrevious;
  this.remove = remove;
}

function remove(item) {
  var prevNode = this.findPrevious(item);
  if (!(prevNode.next == null)) {
    prevNode.next = prevNode.next.next;
  }
}

function findPrevious(item) {
  var currNode = this.head;
  while (!(currNode.next == null) &&
    (currNode.next.element != item)) {
    currNode = currNode.next;
  }
  return currNode;
}

function display() {
  var currNode = this.head;
  while (!(currNode.next == null)) {
    print(currNode.next.element);
    currNode = currNode.next;
  }
}

function find(item) {
  var currNode = this.head;
  while (currNode.element != item) {
    currNode = currNode.next;
  }
  return currNode;
}

function insert(newElement, item) {
  var newNode = new Node(newElement);
  var current = this.find(item);
  newNode.next = current.next;
  current.next = newNode;
}
后话

当然,学好前端,你还需要关注一个公众号!——每日前端
各位兄弟姐妹,共勉!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79197.html

相关文章

  • 学习JavaScript数据结构算法(二):链表

    摘要:实现移除给定的元素要移除的元素返回值表示移除成功方法说明移除单向链表中某个位置的元素。的前端乐园原文链接寒假前端学习学习数据结构与算法二链表 本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列第二篇文章:学习JavaScript数据结构与算法(二):链表第三篇文章:学习JavaScript数据结构与算法(三):集合第四篇文章:学习JavaScript数据结构与...

    lolomaco 评论0 收藏0
  • 【译】JavaScript数据结构(3):单向链表双向链表

    摘要:计算机科学中最常见的两种数据结构是单链表和双链表。双向链表双向链表具有单链表的所有功能,并将其扩展为在链表中可以进行双向遍历。双向链表的操作我们的链表将包括两个构造函数和。与单链表不同,双向链表包含对链表开头和结尾节点的引用。 翻译:疯狂的技术宅英文:https://code.tutsplus.com/art...说明:本文翻译自系列文章《Data Structures With Ja...

    Chiclaim 评论0 收藏0
  • JavaScript 实现链表

    摘要:相反,双向链表具有指向其前后元素的节点。另外,可以对链表进行排序。这个实用程序方法用于打印链表中的节点,仅用于调试目的。第行将更新为,这是从链表中弹出最后一个元素的行为。如果链表为空,则返回。 showImg(https://segmentfault.com/img/bVbsaI7?w=1600&h=228); 什么是链表 单链表是表示一系列节点的数据结构,其中每个节点指向链表中的下一...

    appetizerio 评论0 收藏0
  • JavaScript数据结构04 - 链表

    摘要:类表示要加入链表的项。循环链表和普通链表之间唯一的区别在于,最后一个元素指向下一个元素的指针不是引用,而是指向第一个元素。这里就不进行代码实现了,大家可以结合上面的单向链表和双向链表自己实现一个循环链表。 一、定义 1.1 概念 前面我们学习了数组这种数据结构。数组(或者也可以称为列表)是一种非常简单的存储数据序列的数据结构。在这一节,我们要学习如何实现和使用链表这种动态的数据结构,这...

    cheukyin 评论0 收藏0
  • JavaScript数据结构算法() —— 单向链表

    摘要:链表链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。相对于传统的数组,链表的一个好处在于,添加或者删除元素的时候不需要移动其他元素。 链表 链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本事的节点和一个指向下一个元素的引用组成。相对于传统的数组,链表的一个好处在于,添加或者删除元素的时候不需要移动其他元素。...

    李涛 评论0 收藏0

发表评论

0条评论

elina

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<