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 本身
}
相关推荐
bitbrowser2 小时前
giffgaff突然停用?先分清闲置停用和长期境外断开
笔记
九硕智慧建筑一体化厂家3 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
AI云海3 小时前
天幕红尘笔记
笔记
青山是哪个青山6 小时前
LangChain 学习笔记(三):LangSmith 调试与监控
笔记·学习·langchain
蒸蒸yyyyzwd7 小时前
cpp选手备战后端学习笔记day6 秋招笔试题
笔记·学习
DeviceHub10 小时前
硬件工程师选型笔记:ALPS SKPMAPE010 与 Tonevee TS-3025 贴片轻触开关 PIN TO PIN 评估指南
笔记
wuyk55510 小时前
3.链表:用指针串联的动态数据结构
c语言·开发语言·数据结构·链表
郝学胜-神的一滴10 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
nnerddboy10 小时前
LoRa自学笔记01:原理与学习路线
笔记·学习
疯狂打码的少年11 小时前
【数据结构】二叉树的性质(五大性质+计算)
数据结构·笔记·算法