<4> 头结点、头指针、和首元结点

本文详细解释了链表中的头结点与头指针的概念及其区别,阐述了它们的作用,并讨论了在不同场景下是否需要创建头结点的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 . 概念

头结点:在我看来,头结点其实是为了脱离整个数据链表,能轻易的找到首元结点、操作首元结点而设置的一个结点。

头指针:头指针是一个指针,指向的是头结点,也就意味着头指针里储存着头结点的地址。

首元结点:包含有数据的第一个结点。


2 . 区别

头结点:从上图看出,头结点的数据域里是没有数据的,它的指针域指向的是首元结点。

头指针:仅仅是一个指向头结点的指针,为了方便操作头结点。

DataType *L = (DataType*)malloc(sizeof(DataType)); // 其实在申请内存空间的时候,就声明了头指针,并初始化了第一个头结点。
首元结点:包含了数据的第一个结点,如上图所示的首元结点,就包含了“A”这个数据。

3 . 其他

· 头结点可以不需要,头指针必须留,因为头指针里可以存储头结点或者首元结点的地址,至少我们通过头指针可以找到他们俩任意一个。

· 在创建的时候,有的人喜欢将头结点一起创建,有的人喜欢不要头结点,其实都可以,并不妨碍程序的运行。

· 但:在某些时候,比如循环链表,双向循环链表里边需要对首元结点做操作的时候,不创建头结点,对于首元结点的操作,就有些麻烦了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值