链表之头指针、头结点、首元结点、空链表
链表之头指针、头结点、首元结点、空链表
文章目录
- 链表之头指针、头结点、首元结点、空链表
- 前言
- 疑问整理
- 头指针,头结点,首元结点定义
- 首元结点定义
- 头指针定义
- 头结点定义
- 疑问回答
前言
最近在用力扣刷链表的题,总是写不出来,对这几个概念模模糊糊,非常恼火,为了斩草除根以绝后患,特此整理。也希望帮助到有同样苦恼的小伙伴,看到这篇帖子你就可以彻底解决烦恼啦,不用害怕,打败链表,继续前进!!!
疑问整理
你在学习链表时是否会有下面的疑问?
- 头指针到底是指向头结点还是指向首元结点?
- 头结点里的指针域到底放着头指针还是放着首元结点的指针啊,还是放着别的什么?
- 头结点什么时候有什么时候没有啊?怎么感觉似有似无的?
- 空链表有头结点吗?
······
万恶的头指针!万恶的头结点!
——头指针,头结点os:我好无辜啊,我是为你好而存在的呀┭┮﹏┭┮
头指针,头结点,首元结点定义
以下定义来自《大话数据结构》之本人再加工,如有误,请及时指正,不能误人子弟。
首元结点定义
第一个元素的那个结点。就是data有值时候的那个第一个结点。
有链表不一定有首元结点,假设链表为空链表,就没有;非空链表就肯定有首元结点的哈。
头指针定义
指向链表第一个结点的指针。
有链表一定会有头指针。
请注意,这里没强调是首元结点,还是头结点,就强调第一个结点!我头指针只记得住第一名!
下面是几种情况,可供参考。
为什么要有一个头指针呢?
我们知道,单链表的特性就是记性不好,只记得下一个结点在哪。可是谁又能记住这个链表在哪儿呢,想用这个链表的时候我都不知道怎么找到它,更别提用它的结点了。OK,这事现在就包在头指针这里了。找这个链表——找它的头指针,头指针存着位置呢!
头结点定义
首元结点前的那个结点。
有链表不一定有头结点。想在第一个首元结点前插入或者删除新结点方便,就建议有头结点。
下面两幅图分别对空链表和非空链表做具体阐释。
疑问回答
- 头指针到底是指向头结点还是指向首元结点?
答:不一定。有头结点就是头指针就是指向头结点,没有头结点就是指向首元结点。
- 头结点里的指针域到底放着头指针还是放着首元结点的指针啊,还是放着别的什么?
答:头结点的指针域放着首元结点的指针。
- 头结点什么时候有什么时候没有啊?怎么感觉似有似无的?
答:头结点是为了方便对首元结点前做插入删除操作的。为了方便,大多数情况下都有。
- 空链表有头结点吗?
答:不一定。
后续补充代码。
Loading…