DS-2 有/无头结点的单向链表

一、头结点

一个不存有效数据的"哨兵结点",头结点的 next 才指向第一个数据结点。

二、区别

1. 空链表表现不同

  • 不带头结点head = NULL(直接是空指针)

  • 带头结点head ≠ NULL,但 head->next = NULL(永远有头结点)

2. 插入/删除操作

  • 不带头结点

    • 链表头部插入/删除 时,必须修改头指针 head

    • 头部操作和中间/尾部操作代码逻辑不一样,要单独判断

    • 容易出现空指针、逻辑错误

cpp 复制代码
// 在头部插入新结点
void add(Node** head, int val) {
    Node* new = create(val);
    if (*head == NULL) {  // 必须单独判断空表
        *head = new;      // 直接修改头指针
    } else {
        new->next = *head;
        *head = new;
    }
}
  • 带头结点

    • 无论在头部、中间、尾部插入/删除,逻辑完全统一
cpp 复制代码
// 无论空表还是非空,代码都一样
void add(Node* head, int val) {
    Node* new = create(val);
    new->next = head->next;
    head->next = new;  // 永远不用修改 head 本身
}
相关推荐
智者知已应修善业几秒前
【 LM358AD方波】2024-12-31
驱动开发·经验分享·笔记·硬件架构·硬件工程
什仙4 分钟前
电感规格书全部专业术语完整释义(村田原厂标准定义)
笔记·电感器
生活爱好者!28 分钟前
AI加持的笔记工具,比备忘录好用,NAS一键部署blinko
人工智能·笔记
摇滚侠34 分钟前
Apache Skywalking 实战 阅读笔记 第一章
笔记·apache·skywalking
AOwhisky34 分钟前
Kubernetes(K8s)学习笔记(第十四期):集群存储与有状态应用(下篇):StatefulSet 有状态应用管理
redis·笔记·mysql·云原生·kubernetes·云计算·k8s
来生硬件工程师1 小时前
【硬件笔记】DCDC电源设计—BUCK电路设计要点
笔记·单片机·嵌入式硬件·硬件工程·智能硬件
nongcunqq1 小时前
编辑 cookie 的插件
笔记
AOwhisky1 小时前
kubernetes(K8s)学习笔记:第八期与第九期核心知识点自测与详解
笔记·云原生·kubernetes·云计算·k8s·集群·网络策略
凉、介1 小时前
KVM + QEMU 虚拟化
笔记·学习·嵌入式·arm·qemu·虚拟化·kvm
剑挑星河月1 小时前
35.搜索插入位置
java·数据结构·算法·leetcode