特点:
- 内存不连续
- 随机访问复杂度:O(n)
- 增删负载:O(1)
分类:
1.单向链表:
2.循环链表:
- 尾节点指向头结点
- 从链尾到链头比较方便,解决特殊问题
3.双向链表:
- 每个节点一个后继指针指向后一个节点,也有一个前继指针指向前一个节点
- 增删更加高效
- 如果是有序链表,通过对比,可选择向前或者向后查找,更加高效
4.双向循环链表:
小知识点:
- 对链表频繁的进行增删,容易造成内存随便,JVM会频繁的gc
- 如果对性能要求非常的苛刻,就应避免使用容器,尽量使用数组
题目(练习题LeetCode对应编号:206,141,21,19,876):
- 单链表反转
- 链表中环的检测
- 两个有序链表合并
- 删除链表中倒数第n个节点
- 求链表的中间节点
注意点:
- 指针丢失
- 哨兵节点
- 处理边界条件
