物理存储单元上非连续性、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点(链表中的每一个元素称为节点)组成的,节点可以在运行时动态生成。每个节点包含两个部分:一个部分用于存储当前数据元素,叫做数据域,另一个用于存储下一个节点地址,叫做指针域
链表适合用于存储一些经常增加、删除的数据
链表不适合快速的定位,适合动态的插入和删除的应用场景
访问链表的时间复杂度
查找节点O(N)—从头开始
插入节点O(1)
删除节点O(1)
链表和数组的比较
相对于数组,链表有一些优点
- 内存空间不是必须连续的。可以充分利用计算机的内存。实现灵活的内存动态管理。
- 链表不必在创建时就确认大小,并且大小可以无限延申下去。
- 链表在插入和删除数据时,时间复杂度可以达到O(1),相对数组效率高很多。
相对于数组,链表有一些缺点
- 链表访问任何一个位置时,都需要从头开始访问。(无法跳过第一个元素访问任何一个元素)
- 无法通过下标直接访问元素,需要从头一个个访问,直到找到对应的元素。