概念
- 多个元素组成的的列表
- 元素的存储是不连续的,用 next 指针连在一起
数组 vs 链表
- 数组:增删非首位元素的时候往往需要移动元素
- 链表:增删非首位元素,不需要移动元素,只需要更改 next 指向即可
js 没有链表,可以用 Object 模拟 ```javascript 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;
<a name="rj0EL"></a>
##
<a name="znQqu"></a>
## 遍历链表
```javascript
// 遍历链表
let p = a;
while(p) {
console.log(p.val);
p = p.next;
}
插入值
// 插入值
const e = { val: 'e' };
c.next = e;
e.next = d;
删除
// 删除
c.next = d;
链表思想应用
查找对应路径的值
const json = {
a: {
b: {
c: {
d: 1
}
}
}
}
let p = json;
const path = ['a', 'b', 'c', 'd'];
path.forEach(key => {
p = p[key];
return;
})
console.log(p);