如果不想看定义的话,可以看我的第二部分,里面有我自己遇到的一些疑难。

下文中出现的有关于java的,也有c语言的指针(可以看成java的引用变量),觉得写得不好,多多包涵

目录

  • (一)定义详解
  • (二)个人理解

(一)定义详解

1.头结点:(1)数据结构中,在单链表的开始结点之前设立一个节点称之为头结点,头结点的数据域可以不存储任何信息,也可以存储链表的长度等附加信息,头结点的指针域存储指向第一个结点的指针(即第一个结点的存储位置)。
 
     (2)作用:方便链表的操作,减少代码量,举个例子,要知道在链表中插入,删除一个元素是更改这个结点上一个结点的指针域的位置来实现的,那么怎么样来对第一个结点来进行这些操作,有,但是麻烦,不如引入一个头结点来的方便。总之,引入头结点就可以很少的考虑到一些特殊情况,减少代码量。
 
2.头指针
注意注意注意(1)头指针是指链表中 ,指向第一个结点的指针。 这一点很重要
      (2)头指针具有标识作用,所以常常会用头指针冠以链表的名字。所以你定义一个链表,那么链表的名字一般就是这个链表的头指针。例如:

ListNode L = new ListNode(0);

这个新实例化的链表名字L就是这个链表的头指针。
(3)无论链表是否为空,头指针均不为空,头指针是链表的必要元素。

(二)个人理解

在我学习数据结构的时候,因为对头指针和头结点的理解不够深刻,曾花费了自己大量的时间,下面的都是我自己遇到的一些疑难,我写下来一一解答,即是对自己这段阶段的完美的结束,也希望能帮到你们。这是我对java链表的定义(很浅显):

public class ListNode{int val;//定义数据域ListNode next;//定义指针域ListNode(int x){val = x;}
}

1.大部分情况下,我们说的链表指的都是带着头结点的链表,如链表L,它的头结点在第一个元素结点之前,所以这个链表的第一个结点是指头结点,第一个元素结点在头结点之后,而这第一个元素结点通常也被说为开始结点。话不多说,放图(好难画):

注意注意:这是带有头结点的链表,有的链表是不带有头结点,自己多观察


这张图里第一个结点是头结点,所以头指针指向头结点
 
2.头指针是指向第一个结点位置的指针,所以当链表有头结点时,那么头指针就是指向头结点的指针了,当链表没有头结点时,头指针就是指向第一个元素结点即开始结点的指针了。
 
3.曾经我碰到这么一行代码,没怎么看懂:

 public ListNode reverse(ListNode head){ListNode dummy = new ListNode(0);dummy.next = head;

曾经的我是这样以为的:嗯,new一个新的链表,没错,然后让传进来的链表的头指针head的值(即地址)赋值给这个新的链表dummy的头指针,没错啊,咦,不啊?next不是下一个的意思吗?那么dummy.next = head 的意思不就是将head这个头指针的值(就是头结点的地址)赋值给dummy的下一个指针,那么dummy这个链表里就是头指针dummy的下一个指针的值(即地址)指向head这个链表头结点,那我就这样说,头指针dummy的下一个指针指向了head这个头指针,那么dummy指到哪里去了呢?这位置怎么没有对上嘞?那后面的位置不都是错开来的吗?我好烦!画个图就是这样:

曾经的我为了这个问题想破了天,也在网上搜了不少,诶,却依然没弄懂,因为这个问题,导致我对诸如此类的链表传递地址,都是头指针的位置没有对上,导致我对后面的代码,脑子里都是大大的疑惑,虽然思路看懂了,但是却依旧为此烦恼,原因皆因为这个头指针的问题。
 
答案:next在java链表里的定义(我定义的,不一定是别人定义的)的意思是指针域的意思(请看上面我对链表的定义),在这里就不能看做英文里下一个的意思,所以dummy.next = head 的意思是将head这个头指针赋值给dummy这个头指针的指针域,这样就对的上了,即传进来的形参head变量是个地址,指向head这个链表头结点,将head这个指针的值(即头结点的地址)复制给dummy.next,就是dummy这个链表的头指针被赋值了一个地址,这个地址指向head这个链表头结点的位置。这么说的话,就是正确的了,两个链表就能对的上了。可能有一点点绕口,请慢慢品尝。
 
个人觉得第三点是最重要的
**如有不对,请指正,谢谢!!

数据结构:头指针,头结点详解(新手.小白)相关推荐

  1. 【C语言】小妹不懂指针和数组的关系?那就安排指针数组关系详解

    目录 前言 一.什么是数组 二.什么是指针 三.指针变量的大小 四.数组和指针的关系 五.指针变量的自增自减运算 六.两个参数确定一个数组 七.字符型指针和字符型数组 总结 写在最后 前言 前段时间整 ...

  2. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

  3. this指针的用法详解

    C++中this指针的用法详解 2010-11-12 20:40:45 分类: C/C++ this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.th ...

  4. 数据结构与算法之时间复杂度详解

    数据结构与算法之时间复杂度详解 目录 排序算法的介绍和分类 算法的时间复杂度概念 常见的时间复杂度解析 平均时间复杂度和最坏时间复杂度 空间复杂度介绍 1. 排序算法的介绍和分类 排序算法的介绍 排序 ...

  5. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  6. 制作一个简单的轮播图(详解新手教学)

    制作一个简单的轮播图(详解新手教学) 相信很多初学者,无论是前端还是后端,对于制作页面时,都想自己亲手制作一个轮播图. 如何制作一个轮播图: 基础知识:有HTML,Css,js基础 本文使用技术: H ...

  7. 3.堆栈指针寄存器 SP 详解

    堆栈指针寄存器 SP 详解 堆栈是一种具有"后进先出"(LIFO---Last In First Out)特殊访问属性的存储结构.堆栈一般使用RAM 物理资源作为存储体,再加上LI ...

  8. C语言(函数指针数组)详解

    要了解函数指针数组,可以从三个角度来分析.所谓函数指针数组,从字面意思上来解析,函数指针数组的组成有三个点,函数,指针,数组.首先我们知道,函数指针数组,是一个数组,数组的每个元素是函数指针,也就是一 ...

  9. 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)...

    导语 内容提要 殷人昆编著的<数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)>是清华大学出版社出版的<数据结构(C语言版)>(第2版)的配套教材,对" ...

  10. python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有 ...

最新文章

  1. 写给那些正奔三的80后[转]
  2. OpenGL中使用glutDisplayFunc(myDisplay),myDisplay里面的代码不显示
  3. mp4v2再学习 -- H264视频编码成MP4文件
  4. 前台jsp页面向后台传汉字出现乱码问题解决办法
  5. 我是如何拿到百度计算机视觉暑期实习offer的?百度面经(成功上岸!已拿offer)
  6. c语言高级工程师试题,2020年.Net中高级开发工程师笔试题带答案(3)
  7. 掌握6大技巧,让python编程健步如飞!
  8. flask-script插件
  9. 尚硅谷2022 jenkins教程笔记
  10. 安卓系统抓包工具大全
  11. 【NLP】之 结巴分词
  12. SC_FDE仿真平台:卷积编码 -> 矩阵交织 -> QPSK调制 -> 插入导频 -> 插入CP -> RayleighFading->channel
  13. BIRD 与 BGP 的新手开场 --转
  14. 微信小程序css之盒子(box)模型
  15. 平衡搜索树中的左单旋右单旋双旋
  16. 我的汉语名字叫东坤,可以帮我起一个读音相近的英语名字吗
  17. “思特奇杯”编程之星初赛
  18. win10浏览器闪退_win10 edge浏览器闪退打不开的恢复方法
  19. Android 热修复原理解析
  20. 干货| 生鲜电商的冷库内部该怎么设计(含案例)

热门文章

  1. UGUI 刷新rectTransform
  2. citycode映射表(2018)
  3. 「番茄工作法」- 简单的时间管理方法
  4. Vue常见的钩子函数
  5. 【MCU】用精妙方案解决按键端口太少问题
  6. 日更 - 摄影学习第五课:延时摄影
  7. 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(4)
  8. 近场通信到2027年将达到467.81亿美元
  9. python升序和降序排序sort_【python】 sort、sorted高级排序技巧
  10. CS61A Homework 5