美文网首页
2.3 链表(二)

2.3 链表(二)

作者: forip | 来源:发表于2023-02-08 23:00 被阅读0次

怎么写好链表代码

  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学习笔记,内容来源与极客时间《数据结构与算法之美》

相关文章

  • 2.3 链表(二)

    怎么写好链表代码 理解指针或引用的含义指针存储了指定变量的内存地址,通过指针就能找到这个变量p -> next =...

  • 数据结构与算法 12:线性表

    目录 一、 概述二、顺序表2.1、 插入元素2.2、 删除元素2.3、 特点三、链表3.1、线性链表(单链表)3....

  • 数据结构——链表

    目录 1、属性 2、链表和数组的区别 2.1、数组概述 2.2、数组和链表优缺点 2.3、链表和数组的比较 3、单...

  • 算法图解系列之选择排序[02]

    2 选择排序 O(n2) 2.2 数组和链表 2.3 总结<函数表达式>

  • 《算法图解》

    第2章 选择排序 2.1内存的工作原理 2.2数组和链表 2.3选择排序 2.4小结

  • InnoDB 索引

    链表 -> 二叉查找树 -> 平衡二叉树 -> B树 -> B+树 链表:层级等于链表长度二叉查找树:链表优化,...

  • 数据结构-单向链表

    一、线性表 线性表可以分为: 顺序表(数组) 链表(单向链表、双向链表、循环链表) 二、链表 链表是一种链式存储的...

  • 链表、二叉树、栈、队列的实现

    目录 1.链表 链表 链表定义 2.创建链表(尾插法) 二叉树 栈 队列

  • 双向链表&双向循环链表

    一、双向链表 带有前驱结点、后区节点 双向链表的创建 双向链表插入-逻辑 双向链表删除 删除双向链表指定的元素 二...

  • JavaScript数据结构与算法-链表练习

    链表的实现 一. 单向链表 二. 双向链表 三. 循环链表 练习 一. 实现advance(n)方法,使当前节点向...

网友评论

      本文标题:2.3 链表(二)

      本文链接:https://www.haomeiwen.com/subject/sjefkdtx.html