JS 链表的概念和应用

31 阅读1分钟

1. 概念

  • 链表结构是内存内部的一种存储方式,链表则是把一系列的节点串联起来,每个节点都至少包含两个部分:数据域(保存数据)、指针域(指向下一个节点);
  • 链表中的每个节点,都是用过指针域的值,形成一个线性结构;

2. 链表VS数组

共性:

【线性】都是线性数据结构

区别:

【动-静】数组静态结构,静态分配内存;链表支持动态分配内存;

【断-续】数组是一段连续的存储空间,链表是非连续的通过指针来串联;

【遍-定】数组根据下标可以快速定位,链表需要遍历查找;

【转-移】数组在插入和删除时会有大量的数据移动补位,链表只需要改变指针的指向;

3. 链表的操作方法

新增

在需要插入的地方的上一个节点指向自己,当前节点指向下一个节点

删除

上一个节点指向下一个节点,并且将目标节点指向null释放

4. 创建链表

const a = { data: 1 }
const b = { data: 2 }
const c = { data: 3 }

a.next = b
b.next = c
c.next = null

let point = a
while (point) {
    console.log(point)
    point = point.next
}

const removeValSome = function(data){
    let d = data
    while(d && d.next){
        if(d.data === d.next.data){
            d.next = d.next.next
        }else{
            d = d.next
        }
    }
    return d
}