美文网首页
05 (1)| javascript实现单链表

05 (1)| javascript实现单链表

作者: 雪燃归来 | 来源:发表于2020-05-12 23:08 被阅读0次

在了解链表的基本结构和相关操作的原理,我们可以使用Javascript来实现链表以及其相关的增删该查工作了。

    下面的代码中,我们首先需要定义两个类,Node类:表示单链表中的节点类。LinkedList类中实现了对链表的相关操作。

一、创建链表节点Node类:

function Node(element) {
  this.element = element; //当前节点的数据
  this.next = null; //下一个节点数据
}

一、创建链表操作方法LinkedList类:

首先,我们来一张单链表的图形,后续的操作,我们将通过这张图来进行分析。


image.png
function LinkedList() {
  this.head = new Node("head"); // 头节点
}
LinkedList.prototype = {
// some function 
}

1、查找节点

  //查找节点
  find: function (item) {
    var currNode = this.head;
    while (currNode.element != item) {
      currNode = currNode.next;
    }
    return currNode;
  },

2、向某一元素后面插入新节点

image.png
insert: function (newElement, item) {
    var newNode = new Node(newElement);
    var currNode = this.find(item);
    newNode.next = currNode.next;
    currNode.next = newNode;
  },

3、查找某一节点的前一个节点

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

4、删除某一节点

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

5、修改某一节点数据

  edit: function (item, newItem) {
    var element = this.find(item);
    element.element = newItem;
  },

6、在控制台打印所有的节点

  display: function () {
    var currNode = this.head;
    while (!(currNode.next == null)) {
      console.log(currNode.element);
      currNode = currNode.next;
    }
    console.log(currNode.element);
  },

7、完整的代码

function Node(element) {
  this.element = element; //当前节点的数据
  this.next = null; //下一个节点数据
}

function LinkedList() {
  this.head = new Node("head"); // 头节点
}

LinkedList.prototype = {
  //查找节点
  find: function (item) {
    var currNode = this.head;
    while (currNode.element != item) {
      currNode = currNode.next;
    }
    return currNode;
  },
  // 向某一元素后面插入新节点
  insert: function (newElement, item) {
    var newNode = new Node(newElement);
    var currNode = this.find(item);
    newNode.next = currNode.next;
    currNode.next = newNode;
  },
  //查找某一节点的前一个节点
  findPrevious: function (item) {
    var currNode = this.head;
    while (!(currNode.next == null) && currNode.next.element != item) {
      currNode = currNode.next;
    }
    return currNode;
  },
  // 删除某一节点
  remove: function (item) {
    var prevNode = this.findPrevious(item);
    if (!(prevNode.next == null)) {
      prevNode.next = prevNode.next.next;
    }
  },
  // 修改某一节点数据
  edit: function (item, newItem) {
    var element = this.find(item);
    element.element = newItem;
  },
  // 在控制台打印所有的节点
  display: function () {
    var currNode = this.head;
    while (!(currNode.next == null)) {
      console.log(currNode.element);
      currNode = currNode.next;
    }
    console.log(currNode.element);
  },
};


三、测试代码

//测试
var names = new LinkedList();
names.insert("likek", "head");
names.insert("zhangsan", "likek");
names.insert("lisi", "zhangsan");
names.display();
console.log("------------");
names.remove("zhangsan");
names.display();
console.log("------------");
names.edit("lisi", "antiai");
names.display();

其实理解了链表的结构,我们再对照这链表的结构图,就可以比较直观写出大链表相关的实现逻辑了。

相关文章

  • 05 (1)| javascript实现单链表

    在了解链表的基本结构和相关操作的原理,我们可以使用Javascript来实现链表以及其相关的增删该查工作了。 下面...

  • 链表基本操作

    1、删除单链表节点 2、插入单链表结点 单链表具体实现

  • javascript 实现单链表

    链表是什么?链表(Linked-List)是由一组不必相连的节点,按照一定的顺序链接在一起的抽象数据模型 增删查操...

  • leetcode 单链表的各种算法

    1 递归实现:合并两个有序的单链表 2 递归实现:单链表逆序存入vector 3 循环实现:快慢指针找到单链表中间...

  • 数据结构——Golang实现单链表

    转载请注明出处:数据结构——Golang实现单链表 1. 单链表 1.1. 定义 单向链表(单链表)是链表的一种,...

  • 线性表之单链表实现

    线性表之单链表实现 实现单链表的初始化、插入、删除等基本运算 实现单链表的输入、输出运算 实现单链表的逆置、归并、...

  • 25_静态单链表的实现

    关键词: 单链表的一个缺点、静态单链表设计思路、静态单链表的继承层次结构、静态单链表的实现思路、静态单链表的实现 ...

  • 单链表 & 双链表& 单向循环链表的实现

    单链表 具体实现: 双链表 代码实现: 单向循环链表的实现 代码实现:

  • 链表

    单链表 C实现 Java实现 双链表 C实现 Java实现

  • 用JavaScript实现双向链表

    用JavaScript实现双向链表 前言 JavaScript本身是没有指针的,所以要实现链表的话没有现成的数据结...

网友评论

      本文标题:05 (1)| javascript实现单链表

      本文链接:https://www.haomeiwen.com/subject/ajewnhtx.html