链表
结构
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
链表的存储不用考虑数据的连续性,不考虑扩容性能损耗,是典型的以空间换时间的思想
链表的元素一般具备三个元素:头、尾、中间元素
优缺点
优点:
- 插入删除速度快
基于空间换时间的思想,来支撑快速插入删除,其插入删除复杂度为O(1) - 内存利用率高
- 大小不固定,拓展灵活
缺点:
- 查询速度慢
链表的查询必须从链道开始遍历查找,效率低,其查询复杂度为O(n)
常见类型
- Circular Linked List(循环链表):循环链表是将链表尾部直接指向头部的链表,可以参考约瑟夫环问题