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

发布时间:2019-06-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Javascript与数据结构系列(三)——链表的实现脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

链表实现

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

  • 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;
}

后话

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

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

脚本宝典总结

以上是脚本宝典为你收集整理的Javascript与数据结构系列(三)——链表的实现全部内容,希望文章能够帮你解决Javascript与数据结构系列(三)——链表的实现所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: