算法:(三)链表
(一)链表和数组都是一种线性结构
- 数组是一段连续的存储空间
- 链表空间不一定保证连续,为临时分配
(二)链表的分类
- 按连接方向
- 单链表
- 双链表
- 按有环无环
- 普通链表
- 循环链表
(三)链表问题关键
- 链表调整函数的返回值类型,根据要求往往是节点类型
- 处理链表过程中,先采用画图的方式理清逻辑
- 链表问题对于边界条件讨论要求严格
- 大量链表问题可以使用额外数据结构来简化调整过程
- 但链表问题最优解往往是不使用额外数据结构的方法
(四)链表的插入和删除
- 特殊处理链表为空,或者链表长度为1的情况
- 注意点:头尾节点及空节点需要特殊考虑
- 单链表插入操作:断开链表,插入,next指针指向改变
- 单链表删除操作:前一个节点的next指针指向要删除的节点的后一个节点
- 双链表的插入与删除和单链表类似,但是要额外考虑previous指针的指向