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


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

    前言

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

    疑问整理

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

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

    ······

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

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

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

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

    首元结点定义

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

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

    头指针定义

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

    有链表一定会有头指针。

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

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

    在这里插入图片描述

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

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

    头结点定义

    首元结点前的那个结点。

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

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

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

    疑问回答

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

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

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

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

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

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

    1. 空链表有头结点吗?

    答:不一定。

    后续补充代码。
    Loading…

  • 相关阅读:
    MySQL中的全表扫描和索引树扫描
    Node框架 【Koa】之 【静态资源管理、模板引擎、连接数据库】
    尚硅谷 Spring5
    iOS 性能优化方案-弱网优化
    SpringBoot整合消息中间件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)
    css3 初步了解
    达梦数据库-日期类型常用函数汇总
    linux内核网络收包过程(一)
    linux权限
    C++ | Leetcode C++题解之第174题地下城游戏
  • 原文地址:https://blog.csdn.net/weixin_41692282/article/details/126767231