数据结构第二章:链表中的头指针
这里先讲个杜撰的故事:
有一名超级无敌的杀手,暂且取名叫蛮王(类比下文的linkedList)吧,为了生活已经退隐峡谷,但是时常想起自己的那把绝世武器--九头鞭(linkedList要操作的链表),这把屠龙刀,藏于峡谷的某处,但是藏匿的地址(类比head头指针),是存在于蛮王的兜里的。每当需要的时候,就可以根据这个地址去找到这把刀。可能我语文比较菜哈,举的例子不好,但是自己还是可以理解的哈。
1.结点类Node
该类有两个构造方法,注意。(很多个Node结点组成了链表,看作九头鞭)
2.linkList类:(蛮王杀手类,内部存放了九头鞭的头指针,根据这个头指针找到鞭在哪,才能进峡谷遨游)
3.Test类(lol官方召唤蛮王类,先找到蛮王,蛮王再找到他的武器九头鞭)
4.linkList类添加方法:(九头鞭武器一步一步的增加结点锻造成功的方法)
初始化蛮王类的时候是会先初始化一个null结点作为head指针,这个结点的地址被蛮王类保存,然后组成九头鞭的结点的创建是和head有关联的。唉,可真是太难解释啦,先自己理解吧,感觉面对面讲可能给你整的明白些哈哈。
关于单链表的存取,有时候我们在单链表的第一个结点(有效元素)之前附设一个结点,称之为头结点;指向头结点的指针,称之为头指针;对单链表的存取必须从头指针开始进行,由于单链表的最后一个数据元素没有直接后继,则指针为NULL。
头指针与头结点不同,头结点即第一个结点,头指针是指向第一个结点的指针。链表中可以没有头结点,但不能没有头指针。
关于头指针:
- 在线性表的链式存储结构中,头指针是指链表指向第一个结点的指针,若链表有头结点,则头指针就是指向链表头结点的指针。
- 头指针具有标识作用,故常用头指针冠以链表的名字。
- 无论链表是否为空,头指针均不为空。头指针是链表的必要元素。
关于头结点:
- 头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。
- 有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。
- 首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。
- 头结点不是链表所必需的。
艾欧尼亚,昂扬不灭,为了更美好的明天而战(#^.^#)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构