数据结构:头指针,头结点详解(新手.小白) |
您所在的位置:网站首页 › 指向指针的指针定义是什么 › 数据结构:头指针,头结点详解(新手.小白) |
如果不想看定义的话,可以看我的第二部分,里面有我自己遇到的一些疑难。 下文中出现的有关于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,它的头结点在第一个元素结点之前,所以这个链表的第一个结点是指头结点,第一个元素结点在头结点之后,而这第一个元素结点通常也被说为开始结点。话不多说,放图(好难画): 注意注意:这是带有头结点的链表,有的链表是不带有头结点,自己多观察
曾经的我是这样以为的:嗯,new一个新的链表,没错,然后让传进来的链表的头指针head的值(即地址)赋值给这个新的链表dummy的头指针,没错啊,咦,不啊?next不是下一个的意思吗?那么dummy.next = head 的意思不就是将head这个头指针的值(就是头结点的地址)赋值给dummy的下一个指针,那么dummy这个链表里就是头指针dummy的下一个指针的值(即地址)指向head这个链表头结点,那我就这样说,头指针dummy的下一个指针指向了head这个头指针,那么dummy指到哪里去了呢?这位置怎么没有对上嘞?那后面的位置不都是错开来的吗?我好烦!画个图就是这样: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |