# 链表概览

# 链表是什么?

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

# 总结

  • 链表里的元素存储不是连续的,之前通过 next 连接
  • JavaScript 中没有链表,但可以用 Object 模拟链表
  • 链表常用操作:修改next、遍历链表
  • JS中的原型链也是一个链表(沿着proto指针)
  • 使用链表指针可以获取嵌套JSON的节点值

# 特点

用一组任意存储的单元来存储线性表的数据元素。一个对象存储着本身的值和下一个元素的地址。

  • 需要遍历才能查询到元素,查询慢。
  • 插入元素只需断开连接重新赋值,插入快。

链表在开发中也是经常用到的数据结构,React16Fiber Node 连接起来形成的Fiber Tree, 就是个单链表结构。

# 基本应用

主要是对链表基本概念和特性的应用,如果基础概念掌握牢靠,此类问题即可迎刃而解

# 环类题目

环类题目即从判断一个单链表是否存在循环而扩展衍生的问题

# 双指针

双指针的思想在链表和数组中的题目都经常会用到,主要是利用两个或多个不同位置的指针,通过速度和方向的变换解决问题。

  • 两个指针从不同位置出发:一个从始端开始,另一个从末端开始;
  • 两个指针以不同速度移动:一个指针快一些,另一个指针慢一些。

对于单链表,因为我们只能在一个方向上遍历链表,所以第一种情景可能无法工作。然而,第二种情景,也被称为慢指针和快指针技巧,是非常有用的。

# 双向链表

双链还有一个引用字段,称为prev字段。有了这个额外的字段,您就能够知道当前结点的前一个结点。

上次更新: 3/2/2022, 11:00:49 AM