2.3 链表(二)

怎么写好链表代码

  1. 理解指针或引用的含义
    指针存储了指定变量的内存地址,通过指针就能找到这个变量
    p -> next = q代表p节点的next指针中存储了q节点的内存地址
    常用的还有p->next=p->next->next 直接把p的next指针指向p节点的下下一个加点的内存

  2. 警惕指针丢失和内存泄露
    插入节点时一定要注意操作顺序,在a、b节点中插入c节点时,必须先把c的next指向b,再把a的next指向c。
    同时删除链表节点时也记得手动释放内存空间。

  3. 利用哨兵简化实现难度
    无论插入链表的第一个节点还是删除链表的最后一个节点,我们都需要特殊处理,为了避免和简化操作,引入了哨兵概念。它不参与业务逻辑,只解决边界问题。
    如果链表中存在哨兵节点,它会被称作带头链表,相反,没有哨兵节点的链表被叫做不带头链表。

    image.png

  4. 重点留意边界

    • 如果链表为空,代码是否正常?
    • 如果链表只有一个节点,代码是否正常?
    • 如果链表只有两个节点时,代码是否正常?
    • 代码处理头结点和尾结点时,是否正常?
  5. 举例画图,辅助思考
    在写的同时在草稿上列出具体内容或者画出相关的节点增减,这能有效帮助构筑具体的操作步骤

  6. 多写多练,没有捷径
    多写,熟练以下内容

    • 单链表反转 206
    • 链表中环的检测 141
    • 两个有序的链表合并 21
    • 删除链表倒数第 n 个结点 19
    • 求链表的中间结点 876

此文章为2月Day4学习笔记,内容来源与极客时间《数据结构与算法之美》

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 链表(下):如何轻松写出正确的链表代码? 上一节我讲了链表相关的基础知识。学完之后,我看到有人留言说,基础知识我都...
    GhostintheCode阅读 1,345评论 2 3
  • 线性表 定义:线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、...
    竹blue阅读 414评论 0 0
  • 本讲内容 链表定义和分类链表和数组比较链表操作写链表代码的技巧简单算法题 链表定义和分类 定义:通过指针把零散的内...
    郑小鹿阅读 241评论 0 1
  • 概念 链表的插入,只需要上一个节点的指针指向这个新增的节点,新增的节点指向下一个节点。删除类似操作。 链表当前节点...
    回忆只能等候阅读 535评论 0 0
  • 1. 定义 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。...
    逍遥白亦阅读 449评论 0 1

友情链接更多精彩内容