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
}