00:00
那么根据刚才老师这个分析呢,我们就来开始做,我们先这样干啊,先把这呃,先把这三个结构体创建起来,打开我们的Vs code。好,那现在呢,因为是哈希嘛,所以说我新建一个文件夹。好,那么就叫哈希。哈希,Table。哈希,Table。好,然后呢,我们新建一个,新建一个文件叫main点购就直接写到这了。好,我们新建一个包包package,主包好import,对import,然后呢,同学们啊,现在呢,我们呃,写一个主函数。主函数。那现在首先先根据刚才我们的分析,我先把这三个结构体把它搞定啊,你看如果我没这个分析的话,我自己写代码,大家听起来肯定是很难受的,现在呢,我们把它搞定啊,现在做这个结构体,先把这个哈希table建起来。哈希,Table。
01:01
啊,定义定义这个哈希table啊,干脆这样子,从从这边开始写啊,因为它是它它用到了它,它运用到它嘛,这个关系呢,应该是还是应该先写它再写这个,再写一个,呃,EP link再定义这个哈,它这个顺序才是正确的,好,我们先定义一个employee。好,Type employee啊。好,这地方呢,我们就写两个就行了,一个是他的ID,一个是他的名字,其他我都不要了啊ID然后呢,名字给他一个是尊,然后呢,再有一个重要的指向下一个节点的指针。Next。OK啊,不着急点P好,这个就写完了,方法待会还要写,他肯定会有方法待定。方法待定。OK,待会需要我们再往里面加,紧接着呢,我们再来定义。啊对,我们在定义,定义哪一个呢,就是一个employee link,就是它将来是指向了一个这个链表的,从意义上呢,也比较明确。
02:04
啊,重要比较明确,那么我写一个type OK employee employee link没问题吧,啊,Link。好,你你只要按照老师这个这个方式去优化代码,肯定是立竿见影啊,这些东西呢,就一般只要有这个思路,你好好多东西都可以用了啊,那么这块呢,就是根据刚才我们分析呢,有个头指针。星号连片。分析一下啊,注意这个呢,是我们这个链表是不带表头的,就它第一个节点就直接存东西,注意这个特点啊,但如果说你要带一个表头也可以,那么我这里设计的是不带表头的。那就他第一个节点就直接存放数据了,注意啊,分析我们这里的,我们这里的这个employee呢,我第一个。啊,不代表头。不带表头,不带表头,但大家你也可以带一个表头啊,我这没有写不带表头。因为以前我都是带表头,现在我换一个写法啊,不带表头,然后呢,这点大家注意,就是说第一个节点就直接存放我们的雇员及啊及第一个节点,第一个节点就。
03:12
就干什么存放,哎,存写错了啊,存放这个这个雇员好,这个大家注意一下,好方法也待定,他将来肯定有很多方法啊,方法也待定,那紧接着呢,我们再来定义我们的这个哈希表,定义我们的哈希表。哈希table,那么这个哈希table的本质呢,是一个链表数组,它的本质啊,它它是一个含有什么呢?含有一个链表数组。它是一个链表数组,就是说它是一个数组,但是里面存的是什么呢?存的是链表。啊,这个是比较高级啊,就是以前我们是什么整形数组啊,啊float数组啊,但是这个是链表数组,它存的是链表,那这个怎么怎么整呢?好又带一个type。那么我这写个叫哈希。
04:02
哈哈。Table。哈,那么我们这是个structure。Rock里面我们放的是什么呢?根据刚才的分析,它里面存了七个,当然这个这个七呢可以调整,就你写完了过后,把这个七一改整整个页就变化了,就它马上就变大了,比如说七个不够,你可以写70个,700个,7000个,那速度肯定是大杠杠的啊,因为你你有效的利用空间了嘛,就用空间换时间好,那现在呢,我们我我我们就先暂定七个,我有七个列表。啊,然后写上一个七,然后里面是放的什么东西呢?好,咱们放的就是。七根七个这个employee link啊,我这边我就没用指针啊,因为反正就七个对吧,你要写指针到时也可以就是给他挨着符传过来,我就直接指向他了,好这个写完了啊,写完过后。写完过后呢,我们就来就来继续分析下一个流程。就是说首先你要完成的是一个添加,就是要构建这个列表,你要添加,那么我们就来先写这个添加的任务。
05:09
好,这个东西怎么写呢?好,首先我们给这个哈,增加一个添加的方法。啊,给谁给哈希table。啊,边写边写insert,方法就是insert一个什么呢?雇员的啊,添加一个雇员的。雇员的方法。好,注意看老师怎么写啊。呃,我这样写,我这样写这个呢,稍微稍微的有点要稍微大家动动脑筋的bank。This share给他绑定,给这个哈希table增加一个添加方法,你看那个哈希哈希table总有就就有添加嘛,你们学过Java的同学对吧,都知道哈希肯定有添加呀,呃,这这些操作啊,各种操作都有,那么我们就写自己的一个insert。
06:01
那么你设到一个雇员,你你首先得给我一个东西啊,你得把什么给我呢?你得把这个雇员给我,我才能添加对吧,也就说我我要把这个固源加到我的哈希table里面去,那你得把这个雇员给我,所以说我先有一个这个,那么直接用指针不要不要不用指针啊,不用指针的话,相当于说你创建过它进行一个指拷贝更麻烦,就一定要带指针带上。OK。这个就写完,那么添加的时候,根据刚才老师的分析,添加时首先要确定添加到哪一个链表去。对不对。你你如果不分,那我这个哈希table没有一点意义,对吧,我就是个单,就是一个孤零的,孤零的一个一个单链表,这个没有任何意义,所以说呢,这里面的逻辑,首先第一步先确定把这个固源添加到哪一个链表。使用。使用这个散列函数。
07:01
到闪裂。散列函数确定,确定将将该固原加入到或者叫添加到啊添加到哪个链表。那么这个散列函数呢,你后面可以扩展就说列函数就是呃,根据这个程序员的水平不一样呢,它肯定算法也也就不一样了,比如说我通过ID来闪略的,还是通过名字来闪离的,还是通过ID加名字进行一个闪略都有可能。那这里呢,我就写一个比较简单的,就曲模,但是呢,它仍然是一个闪离的概念,那我就写一个专门用来做闪离的啊。那将来后面同学们可以根据实际情况,根据你的需求来来改变。我们编写。编写一个散列用于散列的函数,那这呃方法啊方法。我们这个方法非常简单,我就简单写一个啊,就是轴,This share,哈希table。
08:03
哈希,Table。对,然后呢,我这边就写一个方法叫做哈希放。哈希放,当然,你把什么给我,我进行闪电呢?肯定我是需要一个ID的。就你要我,因为现在我是按ID来进行闪离的嘛,所以说你把ID给我,我就闪离,所以我返回给你个in特。就说你给我一个ID,我就告诉你将来把这个对应的固源扔到哪个列表去,我会返回这个链表的编号,那这个很简单,我就写的比较简单的一个散列啊,就是ID模期就行了。这是一个非常简单的,但是呢,呃,本质都是这样子的,比如说你将来要做多级,可以再再磨,就有些地方是它有多级的,下面它一个节点还能撑出去,就有些做的比较狠的啊,它这地方是。下面它根据太大了,它这边又是个节点,就是它从这地方再吃出去一根链接。就是二级二级链表。
09:00
二级列表就是磨了以后再磨。啊,这个呢,我就先暂时不说那么多了啊,有有同学呃,兴趣的同学可以再去玩一下这个,这就是闪电值。得到一个值,这个值就是什么呢?就是呃,就是对应的这个链表的链表的这个呃,这个下标。下标OK,好,那现在呢,我们就用它来走一个啊,我就写一个叫link。链表的链表的number就链表第几个或叫no,也可以叫编号,那等于什么呢?等于this点。我们的哈希饭。然后把谁传进去,把雇员的ID传进去。好,拿到这个地方过后,各位同学。各位同学,下一步。怎么办?下一步就要调用对应的这个employee link去进行添加,你不要让他添加,他添加不了。因为你闪离下来去,你你到底应该你应该用哪个列表去去添加啊,你得调出这个哈希里面的这个employee,宁可去添加,你不能在这添加,你添加也也也是不对的,所以说现在呢,我们应该使用对应的。
10:17
谁呀?这个对应的这个链表,链表添加,那怎么做呢?非常的简单,就是this。点他的一个宁可。R,走我们的link number。就说我现在这句话大家能看懂,就是找到我这个链表数组里面的第几个,第几个链表呢这个链表,然后我调用它的insert方法。这个方法没有写,但没关系,我马马上会写啊,那你田教授候是不是把雇员给我就可以了?也就真正填写到工作呢,还是让他去做哈希table在地方只做了一个工作,就是散裂,把它散开。
11:00
但是这个地方相当于可以加逻辑啊,就把闪开闪闪到对应的地方去写,但是这地方它会报错这个地方,因为为为什么报错,因为你还没有写这个方法,好,没关系,我们马上写啊,说这个逻辑呢,就写到这来了,好方法待定吗?不是开写了啊,我们现在先增加一个添加方法。添加。员工的添加员工的啊,员工的方法注意听啊,同学们。那呃,怎么写呢,老规矩,放。放this share。Employ link好,然后呢,我我们这个地方就就怎么做呢,哎,你你不是要添加吗?那我这也写个insert,你把谁给我,把这个雇员给我就可以了。把公园给我啊好,公园给我好,最后我就添加成功。好,你给我一个顾眼,我加进去,那这个时候就要动脑筋了。啊,怎么把它加进去。而且要保证。
12:00
是一个从小到大的顺序。哎,这段还要动动脑筋的了,这都注意啊,注意要保证添加十,保证添加十。是编号,编号是从小。从小到大。导弹,好,那现在呢,老师就来开始写这个代码了啊,同学们一定要想象到,就说你现在这个这个link呢,本身有一个指针,这个指针目前是个空指针。它是一个空的好,现在呢,我们来想想怎么加呢。还得保证从小到大,而且它还是个单链表。各位,现在我的思路是这样子的啊,因为我们知道。你你要保证这个添加。添加进去还要保证从小到大,肯定是需要一个辅助节点的,它基本思路这样子的。这涉及到以前我们讲的一个思路,就是你在进行添加的时候呢,可以这样做。
13:00
好,那我干脆直接写吧,我先我先,我先定一个辅助,我们先这样做,Current,先不要动那个head。先把这个当前链表的头指针先给一个current。这个大家可以想象,就是说现在有个current,一个指针指向了头节点,然后呢,我们再定一个P。这个pre呢,始终保存保持在current的这个前面,这是这是个辅助节点。这是哦,这是一个辅助辅助指针。辅助。辅助之责。好,然后呢,我们再定义一个。保证一个在current之前的一个指针,因为我在添加的时候呢,我需要我需要这个前面一个指针帮助我来把这个东西插进去,所以说我还要定义一个指针P。VAR我就这样写啊P,然后呢,它的类型咱们直接就是。
14:00
Employee。好,Employee,它是个指针。诶。这这是个指针类型。呃,然后呢,它默认是个空的。Near,大家看这个能不能看懂。就说我先定了一个这样的一一个一个指针,它的类型是这个啊,啊指类型是空的,这也是个辅助指针,这是一个辅助指针。啊,辅助的。辅助指是他,他又为什么要设计这个东西呢?因为我待会在添加的时候需要需要这个前面啊说pre始终在哪里呢?不始终它在哪里呢?在current的前面。好,那现在我开始来玩了啊,那那看我怎么走,我先判断。它是不是一个表头的,就说如果,如果它本身就是呃,一个空指针,这个比较好处理,就说如果。注意听啊。如果这个当前当前的这个EP linknk本身就是空的,那这个呢,直接咱咱们加入的时候要要这样处理啊,就是如果当前的因为就是就是什么呢?就是一个空的。
15:14
就是一个空链表。啊,我们先把这个处理,因为空间表比较特殊,那我就做一个判断,如果说这个current。就是等于near。各位,如果current就是等于near,那说明呢,就是因为你你是hi,给他说明这个hide是个near,那说明它就是控制针,那啊它是个空链表,如果它是空链表的话呢,简单了直接这样做。让这个,让这个,呃,this.had。邓局。这个MP就完事了。大家想是不是这个道理,但你也可以说用this had去判断也可以啊,这个也我这因为把它给了current嘛,所以说这个地方你用this had去判断还是current判都是一样的,这个就比较简单,这个就完事了。
16:07
这个就完了,完事儿。完成。啊,注意那如果完成的话,直接就不要往下走了,Return。就别走了,就这个事情就搞定了,那紧接着呢,这写错了。那紧接着说,如果他不是一个红链表。不是一个空间表的话呢,我就让这个pre始终是在后面让current进行比较,让pre呢在后面跟着跟着在在在他前面一直跟,跟着它走啊,这地方呢,逻辑来了啊,For循环。如果不是一个红电表。如果。不是,这个是最最难,难点就在这里,其他都不难啊,如果不是一个互面表。好,那现在呢,我就要开始找位置了。给谁呢?给这个EP找到对应的位置。位置并。插入。啊并插组啊,大家啊,不要着急啊,就写完。
17:04
诶,代码不是一下就写完了啊。啊,不是一个空间表,我就要找到位置,那我怎么找呢?我的思想是这样子的啊,我是让这个current去比较,然后让pre跟在他的就就在始终在他前面,我的思想是这样子的。我的思路是这样写的啊。我的思路。思路是什么呢?我让让这个值。让这个current和C比较,和NP比较。但是他的ID比较。比较。然后呢,然后让这个pre始终保持在这个卡的前面。让,然后让这个让这个P。保持在。保持保持在哪里呢?保持。在A是保保持在。保持在这个current前面,这样呢,我一旦找到我就可以把它加进去了啊,保持在的前面。
18:05
好,现在我就开始做这个工作了,为什么呢?因为我需要有一个比较点哦,需要有个比比的好,那我就开始写了啊,For循环。For循环。好,如果。注意看,如果这个当前这个current,它不等于near。二不等于零。那么我就进行比较。哎,我就进行比较啊,注意看我就比较好,那怎么比较呢,如果current。点他的这个ID,因为你carry的ID呢,呃,就就是这个当前这个链表上的那个雇员的ID,如果这个ID。他。大于了。啊,如果它大于大于什么呢?我们这个EP里面的这个ID。啊,点ID啊。也就说你的current的ID大于它了,那大于它的话呢,就说明。
19:04
我们就应该插入在pre的。前边。呃,就是cover的前面有,相当于说P的后边,Cover在前面。大家看是不是这个逻辑,就是说我大于你了吗?那如果我不大于你的话呢,那说明那说明我如果我这个函不大于你,那我就直接再走嘛,好,直到我大于我找到一个大于你的好,那么如果这个条件成立,就说明找到位置了。啊,就找到位置了。一旦一旦找到位置呢,我们就可以break。我们就可以break出去了啊,不要再走了,否则否则的话呢,我们就继续往下走。就说啊,否则的话,我们就继续往下走,怎么继续往下走呢,就是这样子走走的啊,就是你这个current。等于current,注意看这段代码,哎,这个这个current就是current点。
20:00
往下走,同时呃,这样子做。P re等于current,然后呢,让current往下走一下,这样子说p re始终是在他在他屁股后边了啊,这样就能保证p re是在啊,就是pre是呃在前面,Current是在后边啊,这样保证他们的一个同步。啊,保证他们的一个同步。保证同步。好,我慢点啊,这个逻辑稍微有点有点麻烦,那么什么时候退出来呢?它也有一种可能性,就是一直找不到,一直找不到,就是找到最最后面了,他一直都找不到,那么也就是说这有个S。如果说你这个current都已经找到屁股后边了,还没有break出来。那说明什么,那说明你现在这个。没有哪一个大学堂。因为没有哪个大于它没有哪个大,那说明我们这个添加的呢,是刚好就是最大的,那这一轮你也应该退出。好,退出来过后,同学们注意退出这个for循环过后,我们这个位置就应该是什么呢?就是应该把EP加入到pre的后边。
21:10
就完事了,因为pre呢也是在同步走嘛。同步走对,同步走好,现在呢,我们只要做一个动作啊,这里呢,现在就逻辑就来了,就是退出时。退出时啊,我们确定我们确定一下。两个逻辑了。就是。你退出来过后呢,你得你得看看怎么加进去啊,这边要动动脑筋了。我们想一想。就是你退出这个链表的时候呢,这个我们将。将谁呢?有两种可能性。一种可能性就是。到了。屁股后边了啊,我们我们就来看一下,我们看一下。看一下是不是是否将谁呢,将NP添加到这个链表的链表最后。
22:07
还是插入到它的中间,这个不知道啊,那么做判断,如果呃,我们这样判断啊,如果你经经过一番折腾过后呢,这个current它就等于near,那说明它就是。到到最后了,就是它不停的走,不停的走就到最后了,所以说呢,我们做一个判断,如果你这个current啊,就等于零。好,那现在呢,就说加到最后就行了,那这个时候pre还在,它的pre实际上实际上是。在这我们看到时间逻辑可以把它并起来啊,大家就是这样写的,P re就是这样写的啊,就是。就是就是PR,大家看我的代码,看能不能理解啊p.next。等于。燕萍。好,就是因为它始终是在你前面嘛,加进去,同时呢,还要把它连起这个下面这个代码就可以不用连了,因为你这个ERP呢,本身它后面就是个空,你可以这样写,说老师我这样写行不行。
23:12
Next,因为你把pre指向了NP next呢,按理说他也应该指向这个current。但是因为卡的本身就是尼尔,所以这句话写还是不写无所谓。对吧,行不说,哎这两个是不是现在逻辑都已经合在一起了。就可以了,因为你不等于空也是这样加。所以这个逻辑把这一写应该就加进去了,大家想是不是这样道理?因为你P你看啊,如果说current等于near了,你是相加了,如果不等于near呢。不等于空,那就是从中间夹添加进去,添加进去其实还是这个逻辑。还是把这个逻辑你看PRe.next指行它,它指向它。实际上也是加进去的,我们看看这个逻辑对不对啊,来看一下。
24:01
比如说我们经过了一番折腾。我们这次链表啊,同学们。这这个加入有点麻烦,其他都简单了。其他都比较简单。好。我现在假设有。这么三个链表。好,现在三个链表呢,长的是这样子的,第一个ID等于假设啊等于三。第二个ID假设等于五等于六吧,第三个ID假设等于九,现在呢,我要添加一个,我要添加一个ID等于。是的,假设我要添加一个ID,等于四的,我们看一下这个逻辑对不对。ID等于四的话呢,它原先这个投指针,各位同学,它原先这个投指针就是这个链表的头指针,其实是直接指向了第一个元素。哎,我们看看这个逻辑对不对。他原先只用他。好,你看我的代码对不对,我们验证一下啊,验证一下我的逻辑,那么我把这个代码呢,拿过来用用。
25:05
我的代码,这个代码是我写的,我们来验一下。念想。就是我我们来确认我们这个逻辑是正确的,我把代码放到这,我们来验一下,好,然后呢,我把代码直接粘贴拷贝到这里好的。好,这个代码呢,有点多啊,有点多,我们来看一下。好,走一个好,首先呢,我们来验证,呃,这样子的它要添加了啊,Current等于this.had那也就是说现在呢,我的一个current节点。指向了他,这个大家应该可以理解。啊指向它,然后呢,我让一个p re是空,也就现在有一个near。有有一个P,我换一个颜色吧,好,同学们。好,我换一个这样的颜色,这个颜色呢,我们就代表car,呃,代表了一个p re,这个逻辑,这个P啊,注意听这是一个p re,我帮助大家理解这个是current。
26:06
啊,这个是current。好,这是个current。CR,好,现在呢,呃,Z是等于head指向它了,P等于空,它就不向不指向任何地方,还是没问题的紧,知道current等于near吗?诶,Current不等于near啊,说明它不是空的,不是空的话呢,我们就开始找位置,给这个,这是要准备加入的节点啊,同学们,我找位置,诶先看如果current等于near。如果不等于例二,我就去找,那么它不等于零二嘛,那就是ID大不大于它呢?三不大于四啊,不大于四没有关系,我就让你啊,呃不大于四,那我就PR1也指向它。好,我让他执行current没问题,然后呢,紧接着让current往前面,呃,往往后面挪动一下没问题,好呃挪挪动完了以后呢,诶,我们继续又又进行这个比较current。
27:04
等不等于零二呢,它不等于零二又进来了,又进来过后呢,看RLID大不大于这个npid大于好进到这里这个位置就找到了,就退出来了。我就直接break这个for循环,Break for循环,我要想办法把这个四号。插入到三到六之间,那么我怎么做的呢?诶,因为因为它现在是这个逻辑,它不等于不等于零二吗?不等于零二就PR1NEXT PR next指向它,就是让它的这个下标。先指向了。这个节点。好指向这个节点,然后指向这个节点以后呢,我就我就让EP的下个节点指向current。让他下一个直行,他OK,那你看这个链表就相当于把这个四加进去了。这是在中间插入的情况,应该是正确的好,还有一种情况呢,就是比较极端,就是现在大家做的代码一定要考虑三个情况,就是中间顶前头和最后。
28:10
因为这这三个是它的临界点,那临界点是最容易出问题的了,所以说中间咱们是没有毛病的,这个是可以走通的,我们再来考虑一个,就是说呃,什么呢?就是这个节点特别大。是比如说12。好,假设12,那么我们这个逻辑接着走啊,那首先前面的代码还是一样的,然后呢,我们来for循环,For循环current不等于零,二已经到这儿来了啊,那现在还还不能加进去,它原先的链表的结构是它指向了它。对,它指向了它,然后呢,它又指向了它,好,这个关系是这样的啊,我们接着比。他现在已经到哪儿了呢,发现六。六他已经到这儿来了啊,六大不大于这个呢,六不大于啊,因为我12比你大,所以说不大于的话,它继续让这个往前面挪一下,让让P21。
29:03
走到这个current,然后current呢,往后面挪动一下。对的好,紧接着呢,它又回到地方看等不等于零二呢,那不等于零二,不等于二的话,再比较卡ID大不大于12呢,还是不大于。还是不大于啊,还是还是不大于的话呢,同学们看到我PR1又往下面走了一下。啊,再往下走一下,走一下过呢,Next current还要走一下,它下面是空嘛,说再走的话,这个这个家伙就。就就指向一个空子针了,好这个时候。他判断完了,他又去判断current等倍,它等于零二了。说明现在这个找到了,找到谁呢?就是在P1后屁股后边,所以说呢,他就退出来,那么这个时候因为等于屁股后面,所以说我在p re一点next p一点next指向。就是P2点那个指向差,那说明这个节点的下部。
30:03
只将他。然后呢,我又让这一个,我又让这个。这个ep.next指向current current不就是空吗?所以说它还是指向空,因此这两个逻辑是可以混在一起的,因此这两个可以混在一起,不要写的。只留下一部分代码。大家看这个逻辑啊,还有一种情况就是呃,上来过后链表为空的情况比较特别,我们再验一下。好,上来过后链表就为空,那这个代码还是要小心啊,因为哦,对我这直接了应该问题不大,如果上来就是空链表,我们看这个情况咱们能不能搞定它啊,同学们,假设有一种情况就是链表为空,啥都没有。这本身就是个空链表,本身就是个空链表的话,这个地方是没有指向的。啊,他的头就是个空。也就是说我们这个链表呢,有个头,它本身就是个空家伙。
31:00
啊,所以这个讲起来有点有点费劲啊,好,我们我们看看这个时候能不能加进去啊,同学们看。首先让cover的指向。害current型害就他。其实就是个空,因为现在这个head啊,没有节点,注意重要同学,这个head它是个空的,所以它还是没有指向。所以他没有直线个据点,卡瑞的是空啊,他还是空,P2还说,其实这两个其实都都是孤魂野鬼,还没还没地方走呢,因为他他害的本身就是空。因为它是一个没有带头接点的一个链表,它本身也是空好,紧接着呢,Current等不等于near啊哦,Current等于零,非常的好,非常好的话呢,this.had。好,同学们看我这个代码,Z点害的就是它。让它指向谁,让它指向NP,那也就相当于让这个节点。不指向他了,让这个head呢,直接指向我们的。这个地方好指向完了就走了,这个也是OK的,因为这个相当于第一个节点就进来了。
32:02
第一个节点进来过后,然后呢,诶往下走就没问题。也是可以的,但是这个地方其实如果观察能力比较强的同学,可以看到我这个代码是有一个漏洞的。这个漏洞特别不容易找。谁能看出来这个漏洞在哪里啊?但很难啊,这个你听到不睡觉就相当不容易了,还还能找出漏洞,有一个漏洞我可以告诉你们。这个漏洞呢,假设加了一个12。加了一个,再紧接着再加一个,再加一个的,这个ID刚好比12小,就说他刚好是加了一个比头几年还小的,会容易把这个踢掉。会把他踢掉。为什么会踢掉?因为再来一个比较小的,它实际上害的。指向这个地方就跑了。这个呢,先留到这儿啊,我们后面再去解决,就是说现在这个加入有一个漏洞,什么漏洞呢?就说假设我们给这个链表加了一个比12还小的,它,它会把这个链表破坏掉的。
33:05
啊,但是呢,这个漏洞呢,我待会儿再去。给同学们想一想怎么去处理啊,好,添加就写完了,就这么完了,这是最核心的,这最难的一个点讲完了。啊,这个点讲完,其实后边的代码可以这么说,就一马平川,很简单了啊,很简单了,就是下面代码就几乎没有什么难度,就这个添加很麻烦。OK,好,那关于这个添加呢,我们先讲到这里,好,同学们。
我来说两句