概念

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

image.png

  • 数组 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;

  1. <a name="rj0EL"></a>
  2. ##
  3. <a name="znQqu"></a>
  4. ## 遍历链表
  5. ```javascript
  6. // 遍历链表
  7. let p = a;
  8. while(p) {
  9. console.log(p.val);
  10. p = p.next;
  11. }

插入值

// 插入值
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);