链表头结点存在的意义
2016-07-16 20:32
274 查看
数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。
作用
1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.
2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点.这样就保持了单链表操作的统一性!
3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会。
4、对单链表的多数操作应明确对哪个结点以及该结点的前驱。不带头结点的链表对首元结点、中间结点分别处理等;而带头结点的链表因为有头结点,首元结点、中间结点的操作相同 ,从而减少分支,使算法变得简单 ,流程清晰。对单链表进行插入、删除操作时,如果在首元结点之前插入或删除的是首元结点,不带头结点的单链表需改变头指针的值,在C 算法的函数形参表中头指针一般使用指针的指针(在C+ +中使用引用 &);而带头结点的单链表不需改变头指针的值,函数参数表中头结点使用指针变量即可。
相关文章推荐
- Android之生产者与消费者
- Codeforces 580B Kefa and Company
- 求a,b两数的最大公约数的两种方法
- si4438 与 si4432通讯
- Java 8中一些常用的全新的函数式接口
- 九度OJ 1051 数字阶梯求和
- for for-in foreach 循环
- Android之SurfaceView学习(一)
- swift中解决循环引用的方法
- Visual Studio中NativeViewer and Image Watch插件的使用
- vs2010 solidworks2015 c# add-in模板 二次开发
- Centos6.5+Python2.7 +ffmpeg+opencv2自动安装脚本
- java环境搭建
- [Setting]win7下运行exe失败:应用程序无法启动,因为应用程序的并行配置不正确
- 进程管理和调度 --调度器的实现
- 华为OJ——字符串匹配
- java Fork/Join多线程发送短信
- C标准库之文件目录操作函数——_tempnam
- php 正则表达式
- 将整数序列(7-2-4-6-3-1-5)按所示顺序构建一棵二叉排序树a(亦称二叉搜索树),之后将整数8按照二叉排序树规则插入树a中,请问插入之后的树a中序遍历结果是____。