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

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

相关推荐
茯苓gao19 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾20 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT20 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa20 小时前
HTML和CSS学习
前端·css·学习·html
看海天一色听风起雨落21 小时前
Python学习之装饰器
开发语言·python·学习
Want59521 小时前
C/C++圣诞树①
c语言·开发语言·c++
speop1 天前
llm的一点学习笔记
笔记·学习
非凡ghost1 天前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求
ue星空1 天前
月2期学习笔记
学习·游戏·ue5
萧邀人1 天前
第二课、熟悉Cocos Creator 编辑器界面
学习