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 本身
}
相关推荐
Z21-X1 小时前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Rabitebla9 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
小lu飞10 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
Nuanyt13 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
无心水14 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd14 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
Zhao-Jichao17 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李17 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga19 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd19 小时前
秋招学习笔记 day106
笔记·学习