2025-03-14 学习记录--C/C++-DS-头结点和头指针的区别

DS-头结点和头指针的区别 ⭐️

1. 头指针(Head Pointer)🍭

  • 定义:📚

    • 头指针是指向链表第一个节点的指针。

    • 它是一个指针变量,存储的是链表中第一个节点的地址。

  • 特点:🍰

    • 头指针始终指向链表的第一个节点。

    • 如果链表为空(即没有节点),头指针的值为 NULL

  • 作用:🦋

    • 通过头指针可以访问整个链表。

    • 头指针是链表的入口,没有头指针就无法访问链表。

  • 示例:🌰

c 复制代码
List head; // head 是头指针
  • 如果 链表为空head = NULL
  • 如果 链表不为空head 指向第一个节点

2. 头结点(Head Node)🍭

  • 定义:📚

    • 头结点是链表中的一个特殊节点,位于链表的第一个元素之前。

    • 它是一个实际的节点,通常不存储有效数据(或存储一些辅助信息,如链表长度)。

  • 特点:🍰

    • 头结点的 Next 指针指向链表的第一个有效节点。

    • 即使链表为空,头结点仍然存在。

  • 作用:🦋

    • 头结点可以简化链表的操作,例如在插入和删除节点时不需要特殊处理空链表的情况。

    • 头结点的数据域通常不使用,或者用于存储链表的元信息(如长度)。

  • 示例:🌰

c 复制代码
struct Node {
    int Data;
    struct Node* Next;
};

struct Node headNode; // headNode 是头结点
headNode.Next = NULL; // 初始时链表为空
  • 如果 链表为空headNode.Next = NULL
  • 如果 链表不为空headNode.Next 指向第一个有效节点

3、头指针 vs 头结点 🍭

特性 头指针(Head Pointer) 头结点(Head Node)
类型 指针变量 实际节点
存储内容 链表中第一个节点的地址 数据域(通常为空)和指向第一个节点的指针
链表为空时 值为 NULL 存在,Next 指针为 NULL
作用 链表的入口,用于访问链表 简化链表操作,避免空链表的特殊处理
示例 List head; struct Node headNode;

4、示例代码 🍭

(1)、使用头指针的链表 🎈
c 复制代码
#include <stdio.h>
#include <stdlib.h>

struct Node {
    int Data;
    struct Node* Next;
};

typedef struct Node* List;

int main() {
    List head = NULL; // 头指针,初始为空

    // 插入一个节点
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->Data = 1;
    newNode->Next = NULL;

    head = newNode; // 头指针指向新节点

    printf("头指针链表:%d\n", head->Data); // 输出:1

    return 0;
}
(2)、使用头结点的链表 🎈
c 复制代码
#include <stdio.h>
#include <stdlib.h>

struct Node {
    int Data;
    struct Node* Next;
};

int main() {
    struct Node headNode; // 头结点
    headNode.Next = NULL; // 初始时链表为空

    // 插入一个节点
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->Data = 1;
    newNode->Next = NULL;

    headNode.Next = newNode; // 头结点的 Next 指向新节点

    printf("头结点链表:%d\n", headNode.Next->Data); // 输出:1

    return 0;
}

5、总结 🍭

  • 头指针:🌈

    • 是指向链表第一个节点的指针。

    • 链表为空时,头指针为 NULL

    • 是链表的入口,用于访问链表。

  • 头结点:🌈

    • 是链表中的一个特殊节点,位于第一个有效节点之前。

    • 链表为空时,头结点仍然存在,其 Next 指针为 NULL

    • 用于简化链表操作,避免空链表的特殊处理。

相关推荐
热心网友俣先生4 小时前
2026年第二十三届五一数学建模竞赛C题超详细解题思路+各问题可用模型推荐+部分模型结果展示
c语言·开发语言·数学建模
nashane4 小时前
HarmonyOS 6学习:应用签名文件丢失处理与更新完全指南
学习·华为·harmonyos·harmonyos 5
@codercjw4 小时前
公差的具体标注方法(书本上/理论上标注方法)
学习
li1670902705 小时前
第二十七章:智能指针
c语言·数据结构·c++·visual studio
久菜盒子工作室5 小时前
时寒冰:第五次产业大转移与未来30年国运:在“双向挤压”中实现惊险一跃
人工智能·学习
Amazing_Cacao6 小时前
CFCA精品可可产区认证课程风土解析(美洲):打破风味堆叠的假象,建立时间轴上的层次展开阅读系统
学习
永远不会的CC6 小时前
浙江华昱欣实习(4月23日~ 4月19日)
后端·学习
爱上好庆祝6 小时前
学习js的第五天
前端·css·学习·html·css3·js
qiaozhangchi7 小时前
求解器学习笔记
笔记·python·学习
Aurorar0rua7 小时前
CS50 x 2024 Notes C - 07
c语言·学习方法