javascript 链表LinkedList

链表是一种非常常用的数据结构,相比数组,链表至少有以下优点:

  1. 数组长度固定,每次动态申请后需要移动所有元素,链表随着元素增删长度动态变化;
  2. 向数组中间插入/删除元素需要移动该位置后面的所有元素,链表中间插入/删除元素则无需移动。注意js中的数组是以类形式实现的,splice方法可以支持中间位置增删元素,但它的效率要比C和Java等语言的数组低。

链表的js实现

链表节点
function Node(element) {
    this.element = element;
    this.next = null;
}

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

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

function insert(newElem, item) {
    var newNode = new Node(newElem);
    var current = this.find(item);
    if (current != null) {
        newNode.next = current.next;
        current.next = newNode;
    }
    else {
        newNode.next = this.head.next;
        this.head.next = newNode;
    }
}

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

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

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

此外还有双向链表和循环链表等变形的链表。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识...
    醒着的码者阅读 4,781评论 1 45
  • 原文地址:http://theory.stanford.edu/~amitp/GameProgramming/ 1...
    达微阅读 20,304评论 0 28
  • 晚上看了《育儿大师》某一期节目。 三岁的大宝爱打人,一般是抓、咬、挠,在家父母被打是常事,两个堂哥也受尽了“虐待”...
    低调coco阅读 470评论 1 1
  • 2018-01-20 原文:爱尔兰地区流行一种不知名的植物病,这种病传染性极强,马铃薯无论是长在田里还是贮藏在仓库...
    请叫我四爷阅读 396评论 0 1
  • 那灿烈的午前 瑰丽的花丛 包括周围生长的每一株小草 嫩绿的 茂密的 新鲜的 挂着水珠的 属于我 我的目光所及 划过...
    汉宫有木阅读 270评论 0 0

友情链接更多精彩内容