头结点到底方便了啥?
链表增加头结点的作用如下:
(1)便于首元结点的处理
(2)便于空表和非空表的统一处理
(参考:《数据结构 C语言(第2版)》P31)
其实这两句话很抽象,你说方便就方便,你倒是举个粟子或者画个图什么的啊!!!
直接上图:
上边的图请细品
现在再考虑上述参考书中的两句话:
(1)便于首元结点的处理
增加了头结点后,首元结点的地址保存在头结点(即其 “前驱” 结点)的指针域中,则对链表的第一个数据元素的操作与其他数据元素相同,无需进行特殊处理。
(2)便于空表和非空表的统一处理
当链表不设头结点时,假设 L 为单链表的头指针,它应该指向首元结点,则当单链表为长度n 为 0 的空表时, L 指针为空(判定空表的条件可记为:L== NULL)。
增加头结点后,无论链表是否为空,头指针都是指向头结点的非空指针。若为空表,则头结点的指针域为空(判定空表的条件可记为:L ->next== NULL)