单链表头节点的作用

单链表头节点的作用,第1张

问题:在单链表中使用“头结点”,这个哑陆袜腊结点始终是链表的第一个元好汪素,这个技巧的利与弊?

链表中第一个结点的存储位置叫做头指针,那么整个链表早滑的存取就必须从头指针开始进行了。之后的每一个结点,其实就是上一个的后继指针指向的位置。

链表中第一个结点的存储位置叫做头指针

头指针和头结点不同,头结点即第一个结点,头指针是指向第一个结点的指针。链表中可以没有头结点,但不能没有头指针。

如果链表有头结点,那么头指针就是指向头结点数据域的指针。

单链表也可以没有头结点,没有头结点的单链表

为了使空链表与非空链表处理一致,我们通常设一个头结点。

一、两者区别:

1、不带头结点的单链表对于第一个节点的 *** 作与其他节点不一样,需要特殊处理,这增加了程序的复杂性和出现bug的机会,因此,通常

在单链表的开始结点之前附设一个头结点。

2、带头结点的单链表,初始时一定返回的是指向头结点的地址,所以一定要用二维指针,否则将导致内存访问失败或异常。

3、带头结点与不带头结点初始化、插入、删除、输出 *** 作都不样,在遍历输出链表数据时,带头结点的判断条件是while(head->next!=NULL),

而不带头结点是while(head!=NULL),虽然头指针可以在初始时设定,但是如1所述,对于特殊情况如只有一个节点会出现问题。

作用:

1、防止单链表是空的而设的。当链表为空的时候,带头结点的头指针就指向销卖头结点.如果当链表为空的时候,头结点的指针域的数值为NULL。

2、是为了方便单链表的特殊 *** 作,插入在表头或者删除第一个结点.这样就保持了单链表 *** 作的统一性!

3、单链表加上头结点之后,无论单链表亏颤逗是否为空,头指针始终指向头结点,因此空表和非空表的洞模处理也统一了,方便了单链表的 *** 作,也减少了程序的复杂性和出现bug的机会  。

4、对单链表的多数 *** 作应明确对哪个结点以及该结点的前驱。

节点的存储位置由指针表示。

扩展资料:

链接存储方法

链接方式存储的线性表简称为链表(Linked List)。

链表的具体存储表示为:

①、 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)

②、 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))。

链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。

参考资料:百度百科-单链表

参考资料:百度百科-头结点

A

举个例子,假如我们写一个实现链表删除一个元素的哗档嫌函数(或过蠢汪程),供共享用,函数的参数有2个,一个指针变量(指向链表的头结点),一个字符变量(待删除的元素)。通过链表头结点的指针传给函数的第乱手一个指针变量参数,就可方便实现是哪一个链表的 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11992870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存