数据结构之链表

120 阅读2分钟

1.什么是链表?

链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构 链表和数组类似,是一种线性的数据结构,与数组不同的是,链表中的数据在内存中并不是顺序存储的,而是通过在链表的每个元素中,保存指向下一个元素的引用,来找到下一个元素

13.png

优点

  • 内存空间不是比是连续的. 可以充分利用计算机的内存. 实现灵活的内存动态管理。
  • 链表不必在创建时就确定大小, 并且大小可以无限的延伸下去
  • 链表在插入和删除数据时, 时间复杂度可以达到O(1). 相对数组效率高很多

缺点

  • 访问任何一个位置的元素时, 都需要从头开始访问.(无法跳过第一个元素访问任何一个元素)
  • 无法通过下标直接访问元素, 需要从头一个个访问, 直到找到对应的位置

与线性表/顺序表相比
由于链表不必须按顺序存储,它在插入的时候可以达到O(1)的复杂度,比线性表和顺序表(时间复杂度O(n))快得多。但是链表查找一个节点或者访问特定编号的节点却需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。

3.png

5.png

单链表进行插入和删除操作实际上不需要移动数据元素,只需要修改相关指针1.png

单链表的节点

链表是由一个一个节点通过某种关系建立关联构成的一种数据结构,单链表也是如此。单链表中的所有节点只有一个指向各自直接后继节点的指针域以及各自的数据域:

7.png

11.png