头指针,头结点,头结点的指针的关系?

根据定义:头指针是指向单链表的指针。但是既然添加了头结点,头结点也是结点啊,也有数据域和指针域(有没有值先不管),那么头结点的指针哪去了?不应该是头结点的指针指向首结点吗?(不知道这个结点叫什么,就先称呼为头结点的指针),那么这又该怎么解释呢?

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

这个头指针的意义在于,在访问链表时,总要知道链表存储在什么位置(从何处开始访问),由于链表的特性(next指针),知道了头指针,那么整个链表的元素都能够被访问,也就是说头指针是必须存在的。

扩展资料

引入头结点的优势

1、第1个位置的插入删除更加方便

若使用头结点,则第1个位置的插入和删除都是对p—>next进行操作,而不用动p本身,而且减少了算法分支(即if else分支)。

2、统一空表和非空表的处理

若使用头结点,无论表是否为空,头指针都指向头结点,也就是*LNode类型,对于空表和非空表的操作是一致的。

若不使用头结点,当表非空时,头指针指向第1个结点的地址,即*LNode类型,但是对于空表,头指针指向的是NULL,此时空表和非空表的操作是不一致的。

参考资料来源:

百度百科——链表

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-20
什么叫头结点的指针哪去了?就像你说的,头结点也是结点,所有结点结构都一样的,头结点的指针指向下一个结点啊,链表指针是单独一个指针,你可以看做入口,指引程序找到链表,一旦程序得到链表地址,就可以根据结点的指针一个个地顺藤摸瓜找到所有结点,直到结点n-1,也就是尾结点。

另外,线性链中,尾结点指针是不用的(保留),而如果尾结点的指针指向头结点,头尾相连形成循环链。追问

那你看我们课本上这是什么意思?head怎么一会是头指针怎么一会有事头结点了?

追答

你这个是java吧,带泛型接口的,书上例子中定义并封装了单链表的类,并公开了Node类型的对象,该节点对象的地址赋值给了head,所以head就是Node的指针变量,外部程序可以直接访问,如果head中的节点指针指向类内部的链表,外部程序就可以访问所有链表节点。head本身就是指针,只是书上不是直接指向链表,而是new了一个头节点,用头节点的指针再指向链表表头,这种就看设计需要,不用太纠结。

而且你给的例子符合你主题中的那张图的设计,head是指针,指向头节点,就是new 创建的对象空间,head代表这个头节点,因此你可以将head看成头节点了,那么在创建链表后,必须将链表首地址赋值给head的节点指针。

本回答被提问者和网友采纳
第2个回答  2018-10-16
那个head就是表示头结点的位置 指向头结点 ,对其操作就是对头结点操作,那个头指针就是指向了头结点,就像我们每次对每一个节点操作,都要有一个额外指针指向它一样,头指针作用就是如此, 就像每一个节点存储的都是
相似回答