00:01
好同学们,我们刚才呢,把链表做了一个基本的介绍,然后呢,这个带头节点链表的他这个逻辑示意图呢,有点类似于这么一个东西,Had这个呢是一个节点。就hi呢,它就是一个节点,只是这个hide呢,我们里面不存放具体的数据,而真正有用的数据是从哪里开始呢?是从这个A1,就是说从这个节点开始往里面存放的。啊,这样子的。OK,说电表它看到它是一串啊,一个链就就就像一个链条一样,所以说为什么管它叫链表,就是这么来的,这是带头节点的,那这个基本结构明白了过后呢,我们就直接给他上一个案例。那这三个案例呢,我们以这么一个用带害的头的单向链表来实现一个水浒英雄排行榜的一个管理,我们就借助这个案例来讲解链表的,就是现在讲的是单向链表的增删改查。
01:08
那这个呢,大家第一次听的时候呢,如果说以前听过还好没有听过呢,感觉到有点绕啊,尤其是待会我们在添加的时候,要考虑到这个排序,就是它本身加进去,它就是个有序的话呢,还是有点需要同学们动脑筋的地方来吧,那现在呢,我们就来开始做这个案例。好,同学们,我们把这个链表这一部分来做一个简单的一个整理好,刚才呢,我们已经对链表做了一个基本的说明。好,来一个标题二。标题二,然后呢,我们对链表做了一个基本说明。好,我做了一个介绍对吧,做了一个介绍就说首先要知道它是一个有序的列表。就有顺序。
02:00
它在内存的,他在内存的存储的结构,呃,形式呢,大家要有一个基本的认识,就说你至少要知道它在内存里面,这个地址空间不一定是,就是说挨着顺序的,它反正是这一个next的一个域,或叫next一个指针。啊,指针你可以理解成是个引用,能理解吧,就说同学们在这地方可以整理出说明这么几几几个特点,我们小结一下这个图。啊,小结一下这个图第一点呢,我们可以看出来链表啊啊。链表是什么呢?是一个有序列表。OK,第二个呢,链表的数据啊,链表的这个数据在内存空间,内存空间啊,不一定不一。定是连续连续分布的。分布。啊,分布这个分布的好,这点大家要有一个基本认识,然后呢,我这儿看了一个单链表的一个逻辑结构示意图,这是个逻辑图啊同学们。
03:09
那我们也写到这来,这是单链表的,单链表呢,我们这画的是一个带头节点的。呃,什么叫带头跌点呢?我这里做一个简单说明啊,所谓。啊,这说到这儿啊。我们把这个图线拿过来,再对这个带头节点的链表做一个说明。好OK,我们说一下,这里说明一下啊,啊,所谓带头节点,所谓带带头节点头节点。就是啊,就是链表的头部,就是这个链表,链表的头啊,有一个high的节点。那这个节点呢?该节点,该节点不存放,不存放具体的具体的数据,只是用来干什么呢?只是用来为了操作方便,OK,只是。
04:07
只是为了操作方便。操作方便。方便。方便而设计的,设计的,设计的这个这个节点,设计的这个节点。节点好,这是对他的一个说明,那下面呢,我们就来具体的看这么一个应用案例,好,首先我们看英雄排行榜,先看前面的第一部分。好。那现在呢,我们来实现这个带头节点的一个呃,排行榜,我们先完成第一件事情哈。我们完成对英雄人物的增删改查的一个操作,那么首先呢,我先做一个思路分析,然后我们开始写代码,代码其实啊都不是特别的,不是特别难,但是呢,你要理解了,就得看它内存里面是怎么跑的,因为我们数据结构都是在内存里面玩的,都全是在内存里面跑,所以说我们先说一下这个思路分析,然后我们再写代码思路分析,然后我们是代码实现老师呢就是这么一个思路。
05:18
好,那待会儿老师要用单链表来实现啊,所以说我思路分析呢,我这不写文字了,直接咱们画一个图来描述待会儿老师要做的事情,首先呢。待会儿我要做一个节点,OK。这个节点呢,是一个头节点,理解这是一个头节点。头节点,那么这个头节点里面呢,我们不存放具体的数据,待会儿呢会有这么多节点,各位同学我试一下啊,我就画画四个英雄人物,画三个英雄人物就可以了,比如说我待会儿呢有一个节点,这个节点我先说做一个数据结构叫class,注意听。叫class。
06:01
Hero have no,这个里面呢,我设计这么几个属性,第一个呢,就是它的编号。好的,第二个呢,我们给他来一个名字,就是这个英,这个水浒英雄,他的名字是什么,比如说是武松对吧,然后呢,再给他来一个link name link name呢就是他的什么呀,外号,他外号是什么,比如说。鲁智深是吧,花和尚,鲁智深等等,然后呢,再来一个就是什么呢?下个节点next。就说它会这个next就是同学们在这个图看到的一个,它指向下一个节点的一个属性,那这个属性它的类型是什么呢?就是hero node。默认我们给他一个空能理解,那也就是说将来这里面放的是什么东西呢?它这里面放的就是一个一个的这样的节点。什么节点呢?郭同学,就是这个hero no的这个节点,能理解。
07:04
好,比如说待会儿呢,我放了一个编号为一的,他的名字叫宋江,我就示意一下啊,我可能就是宋江啊。叫及时雨是吧,及时雨。OK,然后它有一个下面有一个next节点,注意这个地方,看看怎么画的next。好,待会有了这个节点以后呢,下面我就依次的再来两个。那比如说这个是二二号人物,那二号我就写个宋江二,我就不写那么多了,因为咱们没有没没有那么时间哈,我把它改成宋江三。宋江山,然后及时与山以示区别,那这个时候呢,同学们看到,呃,待会我的这个形式是这样子的,首先这个亥的节点,它指向了谁,指向了我们第一个。然后它这个next域指向了又一个,我把这个变一个颜色,大家看的清晰一点,然后这个next指向了这个。
08:06
那我问同学们一个问题,这个next的默认它可是空的啊。就是默认没有给值的时空,那你要连成这个这么一个链式的结构,那这个next肯定是要改变的,对吧,那这个节点呢,其实这个头节点是怎么样连起来的呢?待会我们再说,最先前会有个hide的一个变量。这个害的变量,它是先指向了他。那问题来了,你这个头节点本身。它也是一个hiro load,也就是说头节点本身它也是一个higher load。注意听。它也是一个hard的,只是说它里面的数据你不用而已,说待会儿呢,我们来个零就行了,反正我不用,我随便给一个值。啊,名称那边都写空大,先理解我要干什么事,最后这个next域它是指向了第一个及时语的。
09:05
好,这就是我们待会儿要做的一个工作,那待会我们要对这个链表做哪些操作呢?创建、删除、修改和查找。啊,我们要做这样一件事情,好,这是我的一个思路,大家理解了啊,好,我们待会儿要做的事情。就是啊,我们要思路啊,思路就是完成完成。啊,使用链表的方式完成,完成使用单项,我们现在我的是单向链表。练啊练表的方式来管理,管理什么呢。管理这个这个这个英雄人物是吧,就英雄人物人物啊人物就可以了。好,那说白了就是一个增删改查吗。真三。
10:00
增删改查,OK,好,这是老师的一个思路,我们就画到这里来,那下面呢,老师就开始写代码了。这是我的一个简单的示意图,这下这下子大家可能会稍微形象一点,就如果说我不画这个图,大家感觉到很抽象,那就写代码了啊,那代码呢,我们先完成哪一个功能呢?肯定是要先创建和便利嘛。你你先要创建起来,然后呢,我们把它能够看到,然后再说它的修改和删除对不对,好,现在这个第一个分析我们就说完了。
我来说两句