当前位置: 首页 > news >正文

链表之头指针、头结点、首元结点、空链表

链表之头指针、头结点、首元结点、空链表

文章目录

  • 链表之头指针、头结点、首元结点、空链表
    • 前言
    • 疑问整理
    • 头指针,头结点,首元结点定义
      • 首元结点定义
      • 头指针定义
      • 头结点定义
    • 疑问回答

前言

最近在用力扣刷链表的题,总是写不出来,对这几个概念模模糊糊,非常恼火,为了斩草除根以绝后患,特此整理。也希望帮助到有同样苦恼的小伙伴,看到这篇帖子你就可以彻底解决烦恼啦,不用害怕,打败链表,继续前进!!!

疑问整理

你在学习链表时是否会有下面的疑问?

  1. 头指针到底是指向头结点还是指向首元结点?
  2. 头结点里的指针域到底放着头指针还是放着首元结点的指针啊,还是放着别的什么?
  3. 头结点什么时候有什么时候没有啊?怎么感觉似有似无的?
  4. 空链表有头结点吗?

······

万恶的头指针!万恶的头结点!

——头指针,头结点os:我好无辜啊,我是为你好而存在的呀┭┮﹏┭┮

头指针,头结点,首元结点定义

以下定义来自《大话数据结构》之本人再加工,如有误,请及时指正,不能误人子弟

首元结点定义

第一个元素的那个结点。就是data有值时候的那个第一个结点。

有链表不一定有首元结点,假设链表为空链表,就没有;非空链表就肯定有首元结点的哈。

头指针定义

指向链表第一个结点的指针。

有链表一定会有头指针。

请注意,这里没强调是首元结点,还是头结点,就强调第一个结点!我头指针只记得住第一名!

下面是几种情况,可供参考。

在这里插入图片描述

为什么要有一个头指针呢?

我们知道,单链表的特性就是记性不好,只记得下一个结点在哪。可是谁又能记住这个链表在哪儿呢,想用这个链表的时候我都不知道怎么找到它,更别提用它的结点了。OK,这事现在就包在头指针这里了。找这个链表——找它的头指针,头指针存着位置呢!

头结点定义

首元结点前的那个结点。

有链表不一定有头结点。想在第一个首元结点前插入或者删除新结点方便,就建议有头结点。

下面两幅图分别对空链表和非空链表做具体阐释。

在这里插入图片描述
在这里插入图片描述

疑问回答

  1. 头指针到底是指向头结点还是指向首元结点?

答:不一定。有头结点就是头指针就是指向头结点,没有头结点就是指向首元结点。

  1. 头结点里的指针域到底放着头指针还是放着首元结点的指针啊,还是放着别的什么?

答:头结点的指针域放着首元结点的指针。

  1. 头结点什么时候有什么时候没有啊?怎么感觉似有似无的?

答:头结点是为了方便对首元结点前做插入删除操作的。为了方便,大多数情况下都有。

  1. 空链表有头结点吗?

答:不一定。

后续补充代码。
Loading…

相关文章:

  • 【Linux】静态库与共享库
  • POI入门
  • 07- 诊断事件diagnostic events的类图关系
  • 【C#】RestSharp踩坑日记
  • 自学5个月软件测试找到一个8k的工作,我的学习方式值得你借鉴
  • 【JavaEE初阶】文件操作 和 IO (下篇)
  • Nebula Studio:部署与连接
  • Redis 学习笔记
  • 萤火虫(FA)算法(附完整Matlab代码,可直接复制)
  • 01背包完全背包学习记录
  • docker安装redis
  • java毕业设计的婚庆策划系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw
  • Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(二)
  • java毕业设计的家居销售网站mybatis+源码+调试部署+系统+数据库+lw
  • 【Linux操作系统】——网络配置与SSH远程
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Effective Java 笔记(一)
  • ES6语法详解(一)
  • Git同步原始仓库到Fork仓库中
  • golang 发送GET和POST示例
  • jdbc就是这么简单
  • Lucene解析 - 基本概念
  • Python_网络编程
  • SpiderData 2019年2月23日 DApp数据排行榜
  • spring-boot List转Page
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 基于axios的vue插件,让http请求更简单
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 类orAPI - 收藏集 - 掘金
  • 前端技术周刊 2019-01-14:客户端存储
  • 驱动程序原理
  • 收藏好这篇,别再只说“数据劫持”了
  • 消息队列系列二(IOT中消息队列的应用)
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ionic异常记录
  • ​flutter 代码混淆
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (备忘)Java Map 遍历
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)Linux Shell编程——输入输出重定向
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)Dubbo快速入门、介绍、使用
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .net实现客户区延伸至至非客户区
  • @ModelAttribute 注解
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [Android Pro] AndroidX重构和映射
  • [AutoSar NVM] 存储架构