数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。

作用
1、防止单链表是空的而设的。当链表为空的时候,带头结点的头指针就指向头结点。如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL。
2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点。这样就保持了单链表操作的统一性!
3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会。
4、对单链表的多数操作应明确对哪个结点以及该结点的前驱。不带头结点的链表对首元结点、中间结点分别处理等;而带头结点的链表因为有头结点,首元结点、中间结点的操作相同 ,从而减少分支,使算法变得简单 ,流程清晰。对单链表进行插入、删除操作时,如果在首元结点之前插入或删除的是首元结点,不带头结点的单链表需改变头指针的值,在C 算法的函数形参表中头指针一般使用指针的指针(在C+ +中使用引用 &);而带头结点的单链表不需改变头指针的值,函数参数表中头结点使用指针变量即可。

链表头结点存在的意义相关推荐

  1. 求交叉链表头结点-面试必备

    这里分享一下一个交叉链表的关键题目,觉得不错的小伙伴别忘了点赞支持 交叉链表 无环链表 思路 代码 有环链表 思路 代码 总结 无环链表 已知有两个链表(无环)相交,求出相交的头结点 思路 因为链表相 ...

  2. 链表头结点的插入和删除

    看了不少博客,大都讲的比较详细到关于链表节点的删除和插入,但因为没找到相关的头结点插入和删除的博客,所以打算自己写一下方便大家查阅 下面是已经给出的链表的抽象数据结构:然后 然后下面是定义的插入结点的 ...

  3. c语言单链表需要头结点,一个关于C语言链表头结点的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include typedef struct STU{ int sno; char sname[10]; float ...

  4. C语言定义一个头节点,一个关于C语言链表头结点的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include typedef struct STU{ int sno; char sname[10]; float ...

  5. c语言单链表中头结点的创立,一个关于C语言链表头结点的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include typedef struct STU{ int sno; char sname[10]; float ...

  6. c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出

    C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...

  7. c语言将一个已知头结点的单链表逆序_C语言实现常用数据结构:静态链表数组实现(第5篇)...

    「今天是学习C语言第 148 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」 # 静态链表 使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系.实现要点: 1.数组 ...

  8. 头指针和头结点意义和区别

    1.介绍 链表中第一个结点的存储位置叫做头指针,那么整个链表的存取就必须是从头指针开始进行了.之后的每一个结点,其实就是上一个的后继指针指向的位置.链式存储时只要不是循环链表,就一定存在头指针. 2. ...

  9. 数据结构:头指针,头结点详解(新手.小白)

    如果不想看定义的话,可以看我的第二部分,里面有我自己遇到的一些疑难. 下文中出现的有关于java的,也有c语言的指针(可以看成java的引用变量),觉得写得不好,多多包涵 目录 (一)定义详解 (二) ...

最新文章

  1. linux nat 端口,linux – iptables nat只是端口25?
  2. 棋盘覆盖问题原理及演示程序
  3. python正态分布随机数_Python使用numpy产生正态分布随机数的向量或矩阵操作示例...
  4. 【错误记录】SeeMusic 内存错误 ( 内存占用率 100 % | 清除系统设置信息 )
  5. CentOS中安装mysql
  6. linux输出mac,Linux(Mac)命令ll输出后各个字段的含义
  7. 《赛博朋克2077》是如何将人物表情和口型本地化的?
  8. Combination Sum 和Combination Sum II
  9. 收集10个顶级的CSS3代码生成器
  10. 终于,我也到了和 Eclipse 说再见的时候,难说再见
  11. 【LeetCode】【HOT】23. 合并K个升序链表(递归+分治)
  12. java 骗局_Java有陷阱,用时需谨慎——慎用入参做返回值
  13. 西安后宰门小学_【云端论坛】走向未来的墙中老校 ——后宰门小学“名校+”教育集团云论坛精彩绽放...
  14. c4d导出html,C4D动力学如何导出fbx或者其他格式?
  15. Linux最常用的20个命令
  16. Linux 修改 Tomcat 编码
  17. 7-5 华氏度转摄氏度(四舍五入) (5分)
  18. weblogic12c重置密码linux,weblogic 12c忘记domain密码重置方法
  19. 制作一个浪漫温馨的生日礼物送她~html+css+javascript蓝色梦幻海洋3D相册(含音乐)
  20. 珍惜人生路上的点点滴滴

热门文章

  1. axure 元件_在Axure中实现波纹点击特效按钮的方法
  2. 【工业4.0】什么是工业4.0,这篇文章讲得明明白白!
  3. Visio studio 2015企业版,汉语版下载,安装,破解,搞定了
  4. PREEMPT_RT 3.18.136 实时时延评估
  5. ActiveMQ (一):安装启动及测试
  6. Python-斗地主原来是这样的引擎!会了Python之后,我就没输过豆子了!
  7. MFC开发IM-第六篇、MFC 文本框 用法
  8. 2022年春运火车票明起开卖
  9. FF:纳斯达克要求退市系误读 警示函仅与推迟提交Q3财报相关
  10. 产业链人士:台积电将同设备及原材料供应商谈判,希望明年降价15%