算法:(三)链表

(一)链表和数组都是一种线性结构

  • 数组是一段连续的存储空间
  • 链表空间不一定保证连续,为临时分配

(二)链表的分类

  • 按连接方向
    • 单链表
    • 双链表
  • 按有环无环
    • 普通链表
    • 循环链表

(三)链表问题关键

  • 链表调整函数的返回值类型,根据要求往往是节点类型
  • 处理链表过程中,先采用画图的方式理清逻辑
  • 链表问题对于边界条件讨论要求严格
  • 大量链表问题可以使用额外数据结构来简化调整过程
  • 但链表问题最优解往往是不使用额外数据结构的方法

(四)链表的插入和删除

  • 特殊处理链表为空,或者链表长度为1的情况
  • 注意点:头尾节点及空节点需要特殊考虑
  • 单链表插入操作:断开链表,插入,next指针指向改变
  • 单链表删除操作:前一个节点的next指针指向要删除的节点的后一个节点
  • 双链表的插入与删除和单链表类似,但是要额外考虑previous指针的指向
posted @ 2018-12-13 20:36  M-M-Monica  阅读(117)  评论(0编辑  收藏  举报