概念
- 多个元素组成的列表
- 元素存储不连续,用next指针连在一起

在JavaScript中没有链表,但可以用Object来模拟链表。
数组VS链表
- 数组: 增删非首尾元素时往往需要移动元素
- 链表: 增删非首尾元素时,不需要移动元素,只需要更改next的指向即可
Coding
写一个链表类
function ListNode(val, next) {this.val = (val===undefined ? 0 : val)this.next = (next===undefined ? null : next)}
构建链表
const a = { val: 'a' }
const b = { val: 'b' }
const c = { val: 'c' }
const d = { val: 'd' }
a.next = b
b.next = c
c.next = d
console.log(a);

遍历链表
let p = a
while (p) {
console.log(p);
p = p.next
}

链表的插入节点
在b节点和c节点中插入一个e节点
const e = { val: 'e' }
b.next = e
e.next = c
链表的删除节点
方法一:要删除上面插入的e节点, 只需恢复原指向即可,此时没有节点指向e
b.next = c
方法二: 方法一是在知道e节点的上一节点的情况下才能实现的,当不知道e的上一节点时,可以将e的值改为其下一节点的值,并删除下一节点
e.val = c
e.next = d
