头指针,头结点,头结点的指针的关系?
根据定义:头指针是指向单链表的指针。但是既然添加了头结点,头结点也是结点啊,也有数据域和指针域(有没有值先不管),那么头结点的指针哪去了?不应该是头结点的指针指向首结点吗...
根据定义:头指针是指向单链表的指针。但是既然添加了头结点,头结点也是结点啊,也有数据域和指针域(有没有值先不管),那么头结点的指针哪去了?不应该是头结点的指针指向首结点吗?(不知道这个结点叫什么,就先称呼为头结点的指针),那么这又该怎么解释呢?
展开
3个回答
展开全部
头指针与头结点不同,头结点即第一个结点,头指针是指向第一个结点的指针。链表中可以没有头结点,但不能没有头指针。
这个头指针的意义在于,在访问链表时,总要知道链表存储在什么位置(从何处开始访问),由于链表的特性(next指针),知道了头指针,那么整个链表的元素都能够被访问,也就是说头指针是必须存在的。
扩展资料
引入头结点的优势
1、第1个位置的插入删除更加方便
若使用头结点,则第1个位置的插入和删除都是对p—>next进行操作,而不用动p本身,而且减少了算法分支(即if else分支)。
2、统一空表和非空表的处理
若使用头结点,无论表是否为空,头指针都指向头结点,也就是*LNode类型,对于空表和非空表的操作是一致的。
若不使用头结点,当表非空时,头指针指向第1个结点的地址,即*LNode类型,但是对于空表,头指针指向的是NULL,此时空表和非空表的操作是不一致的。
参考资料来源:
展开全部
什么叫头结点的指针哪去了?就像你说的,头结点也是结点,所有结点结构都一样的,头结点的指针指向下一个结点啊,链表指针是单独一个指针,你可以看做入口,指引程序找到链表,一旦程序得到链表地址,就可以根据结点的指针一个个地顺藤摸瓜找到所有结点,直到结点n-1,也就是尾结点。
另外,线性链中,尾结点指针是不用的(保留),而如果尾结点的指针指向头结点,头尾相连形成循环链。
另外,线性链中,尾结点指针是不用的(保留),而如果尾结点的指针指向头结点,头尾相连形成循环链。
更多追问追答
追答
你这个是java吧,带泛型接口的,书上例子中定义并封装了单链表的类,并公开了Node类型的对象,该节点对象的地址赋值给了head,所以head就是Node的指针变量,外部程序可以直接访问,如果head中的节点指针指向类内部的链表,外部程序就可以访问所有链表节点。head本身就是指针,只是书上不是直接指向链表,而是new了一个头节点,用头节点的指针再指向链表表头,这种就看设计需要,不用太纠结。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那个head就是表示头结点的位置 指向头结点 ,对其操作就是对头结点操作,那个头指针就是指向了头结点,就像我们每次对每一个节点操作,都要有一个额外指针指向它一样,头指针作用就是如此, 就像每一个节点存储的都是
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询