关于Java单向链表头结点与头指针傻傻分不清
在初学数据结构单链表的时候,对于链表的的头指针和头结点之间的区别和联系不是很清楚,后来查阅了一些资料,根据自己的理解大概整理了一下这两者之间的关系,主要就是下面这几点:
1. 头指针表明了链表的起点,可以唯一确定一个单链表。
2. 头指针指向链表的第一个结点,其指针域存储的是第一个结点在内存中的位置。
3. 头结点是单链表的第一个结点,若单链表有头结点,则头指针指向头结点;若单链表不含头结点,则头指针指向第一个结点。
4. 一个单链表可以没有头结点,但不能没有头指针。
5、头结点一般不存放数据,故当不存在头结点时,不严格意义情况下可以将头指针视为头结点【不严格意义】,此时便与有头结点的单向链表保持一致了呢!
(所以后续刷题遇到的head跟first都是头指针,视具体情况确定是否将其视为头结点)真正存储有意义数据的为第一个结点,而不是头结点【严格概念层面上讲】
6、无头结点时,头指针head/first亦可以视为头结点【不严格意义上,其本质一样,因为无头结点,头指针便会指向第一个结点,
而头结点本身不存储数据仅存储指向下一结点【第一个结点】的指针或者说是存储指向下一节点的内存地址 】
如图:
不带头结点的单链表
带头结点的单链表
原文链接:https://blog.csdn.net/qq_35514178/article/details/102636001