00:00
好,我们看一下这个代码,这个添加这个代码呢,这还有一点点可以优化的,就是他的ID大于,呃,这个地方我们才退出,其实它等于就可以退出了,对吧,因为那假设我们刚好有几个相同的,你你也没必要非得把这个添添加到最后嘛,就是其实它等于就可以了。啊。哪地方?啊对,嗯,这个地方如果想ID不唯一的话呢,那还要加加点判断了,那如果说我们我们现在这个地方没有去控制ID为唯一啊,那如果你说ID还要不允许重复,那这个代码还要做一些,还要做一些优化啊,还要做一些优化,这个大家想想怎么去去优化。大家去想想怎么去优化对。好,我们这个先写到这儿,然后呢,我们接着往下看,接着往下看,那现在呃,这个添加,咱们这个事儿就搞定了,那我就把它放进去了啊,添加就完事了。
01:05
添加完事过后呢,我们现在来做一个功能啊,因为有添加了,我们现在做一个什么功能呢?我们做一个显示,把所有链表的,把整个哈希表全部打印出来。就看看到底有哪些人在里面,看看对不对,好,下面呢,我们再来写一个,写一个方法啊各位同学,我们现在写一个方法,就是显示所有员工的方法,那现在呢,我开始玩一把。那么把这个菜单好,我们现在先把它写进去吧,再写菜单。啊,菜单现在还没写,没写菜单啊,就说现在写这个东西就是啊边写一个函数编写方法,编写方法显示显示哈希表所有的雇员。哈希table的所有的雇员。好,这个对我们来说还是比较简单的啊,放this,然后呢。哈,然后呢,我就写一句话叫瘦哦,所有的给我显示出来。
02:05
哦,好,我也我也不分你是哪一个,我也不是查找全部给我弄出来,那那大家想一想,我一共有多少个这个哈希,哈希表对应的列表呢,我就负循环一下I。等于0I小于z.link。好,我对它进行一个大小的统计,我看你到底有多少根链表,我不管有多少根,你全部给我显示出来就行了,I加加,然后呢,显示的时候我们调用对应的那个链条,不要调错了啊,调错到时候出问题的。那么我们就是this link,然后它的i.so就可以了。啊啊,受link吧,受link显示链表,那这个方法我们还没写,也就说这个受link呢,还得最终让谁来干活呢,还得让我们这个链表来干活,还得让他干活,所以说我要在这面增加一个方法,对,我要增加一个方法来。
03:05
显示,显示当前列表。链表的信息,好,这个就比较简单了,咱们就直接写啊,那这放然后呢,This走线,然后呢,这个是EP对P啊。然后呢,咱们就写一个叫受link。啊,不需要传什么东西过来,因为你是自己显示自己嘛,无所谓好,现在呢,我们先来判断里面有没有数据,如果是空链表,我们给他一个提示就行了啊,如果是空链表就不不要显示,如果this.hi它本身就等于near。就说如果它这个当前这个链表还没有数据,等于列的话,你就打印出句话,当前链表链表谁为空就行了啊,这链表是谁。对链表的链表的这个它的编号写出来,链表。
04:02
链表。C2现在数据为空。这样写就行了。数据为空。没,没有,没有雇员吧,或者没有数据为空为空,那么现在问题来了,就是我想把当前链表的它的编号打印出来,各位。你必须传参数对吧,因为我这个链表里面呢,我没有去保存,它是第几条链表没有保存,所以说呢,也很简单,我接收一下就可以了,把它number给我传进来就行了,那谁知道。那哪哪一个人知道你是编号是多少呢?显然在掉的时候他是知道的,我把它填进去就行了。看啊,这这个列表为I嘛,就是它是第几条列表,这个这个可以传到的,所以说这个地方我们打印出来一个no就行了。就是链表多少为空,如果它不为空的话呢,咱们这个这个就继续往下走。
05:01
如果不为空,我就遍历当前列表显示数据。有便利。当前的链表。并显示数据。并显示数据。好,那么怎么来便利呢?非常的简单,负循环一下就行了,我们还是做一个跑路的啊,让做一个那个那个帮忙的current,等于让他先指向这个head head这个呢,我们一般不去动它。不动它害的,然后呢,这个是这个是一个帮忙的啊,这是辅助节点吧,辅助。辅助的。辅助的一个指针。那么辅助指针呢?呃,就这样写,如果。就说如果这个current它不等于零。我就输出信息,这很简单,就是C不等于零,我就可以把它的值取出来嘛,等于near就不能再做了,好就把它打印出来就行了,Print printtf,好就说呃链链表,当然你这个地方要注意啊,就是上面这个链表和下面不一定是以同一个了,所以说我怎么打印呢?就把他列表信息打出来吧,列表谁谁谁就行了,列表谁谁谁,然后呢,他的ID,员工ID。
06:15
雇员的ID。雇员。啊。雇员ID等于好给输出来,然后呢,他的呃名字也也给他输出来吧,啊名字。名字。好名字,那么名字呢,我们来写个S就可以了,好,首先把ID取出来,ID就是当前的这个节点的ID,名字是当前这个节点的名字。好,这就取出来了,取完了过后呢,咱们就就用一个箭头指向吧,好这样也可以。好,写完以后把打印出来,这用报一个措施吧,他说少了A个值啊,链表链表的值好,链表呢是他这传进来就是直接no就行了。
07:01
And,我。好,列表啊,OK。好,那现在呢,我们这个做完了以后,你不等于空,不等于空过后呢,就让他这个什么呢,往下接着走一步,要往下再走一步,这个没问题,叫current next。对,走一个,那如果这个卡等于near了,就代表它已经为空了嘛,如果为空的话呢,就说明不要再显示了,就退出了,对不对,就break。就完事了。好,这样这样子代码就完事了啊,就是链表谁谁谁咱们打印出来了,每每一条链表我们都打出来了,最后呢,为了这个好看,你整个打完了过后呢,我们建议给他来一个,呃,就是换行,因为下一条链表还要打,所以说呢,我们这地方来一个换行。Dpit,好,这个是当前链表的下一行啊,换行换行处理,换行处理好,换行处理的话,这个代码就应该是差不多写完了啊,差不多就写完了,那么现在呢,我们来玩一把啊,看看代码到底有没有成功,我们先做一个菜单。
08:12
好,我们做一个菜单啊,来快速的走一走,我的菜单呢,是简单设计一个就行了,还在菜单出线,请选择下面的菜单。啊,就是固原系统的菜单。对菜单,那么我就简单写一个现在现在能用到的啊,来写写一个print。好,我们就这样写,就是input表示输入,表示输入固源,就添加固源吧,添加雇员,OK。好,其他就快速走一个,如果是,呃,如果是瘦呢。受就是要显示所有的雇员,表示显示所有雇员。显示雇源,那么如果你说的是find啊,就代表查找雇源,对,代表查找公源,Find。
09:02
表示要表示查找固源啊,那查找固源肯定就要让输ID了。他到红好这也写完了,那么如果是输入的ext。好,这个呢,就表示退出系统。啊,就是退出。退出系统,好,这就写完,然后呢,我在外面定义一个K,这个以前我们写过好多遍了,K找一个空,对,然后呢,我们就来接收,就说请输入你的选择。啊,就直接先写了,就就提示他一下吧,请输入选择。Print,好,请输入。请输入你的这个选择,好,然后呢,我就接收一下啊,同学们接收那就啊form.sc。试看一轮,好,我搜一下。收到这个K里面去,然后做一个Switch的判断。Wick,那么我做一个简单的处理啊,如果是input,如果是input好怎么办?如果是so怎么办?
10:05
好,那如果是退出,我们又怎么办?对,退出又怎么办?好,把它简单处理一下exit。好,Default,如果他一个都没输,对,我们把推出来,Default。D fat at,好,就说这个你的输入有误啊,不再不再处理好这个就form。啊,就是输入有误。输入错误。好,那现在我们来看看这个这个输入啊,输入你你现在要怎么才能添加一个雇员呢?首先你得给我添加它的ID,所以说我先确定一下一个ID初始化为零,然后呢,你要给我一个名字,对初始化一个空串,对这样就就是这这两个最基本的,那么就提示他一下。好,我把这篇挪一挪啊,快速的写一下,这个都很简单了。Print r问题好,请输入ID号,输入雇员的ID。
11:01
雇员ID好,然后呢,我就接收一下是看。C好,然后呢,ID收一把。对,然后呢,我们再来让他接收一下雇员的名字。雇员的名字,好的名字,那么我也接收一下,对,然后呢,做完了之后,我们构建这个雇员。固员你肯定要构建起来,好的,那MP我们把它创建起来,里面有个ID,这个ID呢,就是输入的ID,还有一个名字,名字就是输入的名字,写完了,写完过后同学们现在呢,我们调用哈table将它添加进去哈table呢,呃,我们这有一个哈table这么一个东西,好,我们。来创建一个哈table啊哈,Table呢,你要用的时候,其实你可以定在外边啊,你可以定在外边就行了,不用每次去创建对吧。所以这个table呢,我们在外面定一个吧,定一个哈table。
12:00
那我这就构建一个。Type,好,来一个,就先把这个创建起来,VAR。那取个名字吧,哈西。Table。这就可以了,初始化这个不需要什么初始化,初始化的时候,因为它这边都有啊,这边都有,所以说直接用它就行了。好,阿提,他没有用。然后现在呢,就调查。点它这里面有个方法叫insert,那么insert的时候呢,把这个EP放进去就可以了啊,里面的动作它就全部给你做完了。好,添加进去保存一下。好,然后呢显示,如果他发现是显示的话呢,我们用哈希table来显示就可以了,点它这里一个方法叫受。受奥好像是。好,这个代码就写完了,应该是我们看代码有没有问题啊,同学们好,如果是input。如果是input就输入ID名字,然后构建或者创建一个固,创建一个固源,然后把这个雇员扔进去啊,扔进去过后呢,它底层它这一一套,就是刚才我们写的这一套,它就会发生作用,发生作用以后呢,我们显示的时候,它就把所有的呃,所有的链表信息给我们显示出来,如果为空,它提示为空,好为空,看看这地方有没有换行啊。
13:22
啊对,有个换行,那么先玩一下吧,如果有问题我们再调一调啊好朋友们,我们来玩一把。CD点点CD点点CD到哈希table,然后go run main.go跑。好,抛一下。好,他说请输入你的选择,那现在我们直接试一下,应该是个空的,看有没有,所以这个最容易出错了啊。还好。这个上来秀的话,没有报任何错误说明,没没有没有控制帧异常,你看他说链表0123456全为空,没没问题吧,本人就空的,然后呢,我加入东西input,那input我输一个,咱们用一判断的,比如说这个人的ID就为一,这个应该加到第几条链表呢?第二条链表对不对,第二条链表说说我数一个名字叫汤博。
14:09
添加进去了,添加进去,然后呢,我们再搜一下。我们可以看到各位同学,我们看到在第一条链当时,第二条链表了,它的雇员的ID为一汤姆在里面已经有了,我们再来玩一把,我们再再换一个别的啊。哦,我们再加一个,比如说是。比如是八号吧,八号看他应该加到哪去啊,还是input说一个八号,八号员工,八号员工呢,八号员工我们给他一个这个名字叫Jackie。好瘦。好,我们发现八号员工也到一区了,而且他的确是在。这个屁股后边好,我们再来一个啊,在input再input呢,我给他来一个890 89号,89号我也不知道是多少,我们看一下它,它会放到哪去啊Scott。
15:01
So。好,89号会落在第五条链表,大家可以看一下89模上。磨上这个这个这个七啊,应该是在这,而且顺序也是正常的,好OK好同学们看这个代码就添加到,比如说我我添加到中间也是可以的啊,添加屁股后边也是可以的,可以的,那么我们来这个中间还不行,因为你这已经是最小的,我们来找一个看看能不能中间加一个那一个八加。八加七十五十五十五再加一起22来一个22,先让他到后面去啊。Input来一个22号编号。22 22号,比如说是呃,Mary。好手,我们可以看到是在这儿,然后呢,我再加一个。八七十五,15号,15号会在八和22之间,看看有没有有没有扔进去啊。Input。15号。15套叫史密斯。
16:02
看看啊,这个15号应该加在第一条,就是第二条链表里面的八和22之间,看看有没有正确受。好,我们看一下这个对不对。啊,这是编号为一啊,这个是编号,编号为八,这个是编号15,这个是编号22是正确的。的。啊OK,那这个代码呢,应该是没有什么问题,但是有一个漏洞啊,这个漏洞呢,我刚才已经说过了,同学们再待会儿呢,想办法去能不能把它处理一下,好好,这个至少从目前来看,大体没什么问题,那现在这样子啊,因为呃,上午呢老师。一直说了这么多,那同学们呢,应该对不对啊,把这个先念一下,我先把这块的东西呢,给大家整理一下啊,整理一下我们看现在说到哪里了。好的,把这块给大家整理一下,那现在呢,示意图我们来画一画。
17:04
OK啊,同学们,示意图这是,呃,根据我刚才的分析呢,我们画的一个哈希table的一个示意图,对示意图我们把它拿过来。拉过来,放在我们的笔记里边去。放在笔记里面去,然后呢,我们完成了一部分代码,我们完成了哪些东西呢?我们来整理一下这个代码啊。哦,我们写了这么一些东西。首先呢,我定义了一下。啊,我定义了一下他的这个信息在这里,对不对,这块是从NP啊in p linknk,然后呢,还有他的添加,还有他的一系列这个显示我们都写好了,那么我把这个代码呢,先给它放在笔记里边去。好的,同学们。好,那同学们关于这个最基本的前面这这一部分实现呢,我们先讲到这里。
我来说两句