何为链表

image.png
图中为单链表
链表每个信息的详细构造
image.png

链表的特点

1:空间上不是连续的,链表更像是锁链,一环扣一环
2:存放的一个值,都要多开销一个引用空间

优点

1:只要内存足够大,就能存的下,不用担心空间碎片的问题,
2:链表的添加与删除非常容易操作

链表的添加与删除图解

添加

image.png
如图往链表中添加一个新数据E,只需要将数据B的索引改为E,将数据E的索引改为C

删除

image.png
如图删除数据E,只需要将数据B的索引修改为C,假设我需要此链表中的数据,肯定是从A开始,不然会获取不到所有数据
注意,假如想传递一个链表,必须从链表的根节点,每一个节点都认为自己是根节点

缺点

1:查询的速度慢(查询某一位置的数据)
2:链表每一个节点都需要创建一个指向next的引用,浪费一些空间

  1. // 生成链表
  2. function Node (value){
  3. this.value = value;
  4. this.next = null;
  5. }
  6. const a = new Node(1)
  7. const b = new Node(2)
  8. const c = new Node(3)
  9. const d = new Node(4)
  10. a.next = b;
  11. b.next = c;
  12. c.next = d;
  13. console.log(a.value)
  14. console.log(a.next.value)
  15. console.log(a.next.next.value)
  16. console.log(a.next.next.next.value)