00:00
呃,那下边呢,我们就把刚才我们分析的,呃,这个呃就是哈希哈希table,我们把它给实现一把。好。我们来一起把这个代码走一走啊走一走,呃,这边的要求已经很清晰了,就当一个公司有新员工来报道时,要求该员工的信息加入到里面去,要求能够查找啊,而且呢,添加时我们呃,这个地方呢,我们就保证ID从低到高插入,就是添加的时候我们按顺序来,那么晚上给大家出的一个提示,如果ID他在,呃添加的时候不是从低到高,你在,那你在要求保证各填列表仍然是从低到高,你们自己去要,要做一个思考啊,要做思思考好,现在呢,我们就就来写写这段代码,因为这个思路咱们已经分析清楚了,现在呢。我们就来写这段代码。好,我们,呃,这个地方我们就取个名字叫哈希table。
01:07
建一个包。叫哈希。Table。好的,那现在呢,我们一起来写。叫哈希。呃,Table测试啊,叫DEMO吧。好,我们一起来做这个事儿啊,首先呢,根据刚才前面的分析,我们先创建这个employee类。这个类呢,我们一起做一下employee,首先呢,呃,我们有ID和名字,其他我就先暂时不要了,比如说我传进去一个employee的ID是一个类型的,然后呢,让他传这个雇员的名字传进去。好传进去以后呢,我这里接收一下,比如说ID我们是呃不让改变的,所以说我这直接将它传过来接收一下EID。
02:07
然后呢,我们在接收一下这个名字,名字呢将来有可能改变,所以我用这个VR。好,还有一个是什么呢?还有一个就是它的next指针啊,我们这边写个next。类型是employee。等于默认给他一个空好。我们的这个class就写完了。现在呢,我们开始写employee link的list,就是写这个链表,这个链表里面可以管理我们的雇员。啊,当然主要先写一个添加和和这个呃,简便利好,现在我们来创建employee list linked list。好,现在我们来写一写,好class。写进去。
03:00
写进去。好,首先呢,呃,我们先把它的大小定下来,就是呃不用定大小,我们先把这个头指针啊先出,先写个头指针定义。第一个投资人。就是头指针。那么投资人,我们前面,呃,同学们都已经知道怎么写了啊,我就直接这样写它,它指向的是个什么呢?Employee,对,那这面我们初始化为空。注意啊,这个投资人我们就让他直接指向一个具体的雇员了,我们嗯,我们跟前面那个单链表呃不一样,就是直接让他指向一个具体的对象啊这里。我们写下啊,这里的这个head head我们直接啊,直接会会指向指向一个固源。好,OK。当你如果说你要愿意设置一个呃,专门设计一个那个嗯,指向一个呃无效的那个employee的。
04:04
那个图节点也可以,我这里就指向直接指向一个雇员,那现在呢,我们就来先写一个添加的方法。啊,添加固源的方法。那添加共源的方法呢,我们来想一想哈,就是如果说因为大家看到将来我们这个链表呢,呃,大家先不要去考虑link的list的,待会再说,就是你将来这个链表的头会指向一个雇员,我们就来想想这个怎么做啊,同学们那就开始写了爱的。添加,那你首先得给我一个雇员吧。你肯定在前面进行添加的时候,你会给我一个雇员,所以说我在这里呢,给大家放进去就添加。添加的时候呢,我们先我们知道添加有两种方法。第一种方法呢,就是呃,找它对应的位置加进去,第二种方法呢,就是呃直接在尾部加入,我们现在假定哈,我先写一个这个,呃这样假假定我们假定这个用户。
05:07
大家都知道一个一个雇员来了以后,大家知道你们参加工作以后,也是你们参加工作,一个雇员来了以后呢,他会给你分配一个ID,但这个ID默认一般也是自生长的,一般情况下在数据库里面也是这样设计的。所以说你这个。给你的这个ID呢,也会自增长,我们是这样认为的啊,我们假定雇员的ID,雇员的添加的啊,就写添加的雇员的ID是。是自增长的,自增的。是真的。啊,也就是说ID总是从小到大往里面添加,即。及雇员的ID。雇员分配的ID总是。总是从小到大。OK,那现在呢,来了一个ID,我们怎么办呢?那既然他都是从小到大的,我就直接找到这个链表的尾部给他加入即可。因此我只要找到。
06:08
对,我找到找到链表的尾部尾啊就是最后。最后加入即可。那现在我们来找一下这个尾,最后啊,呃,我们来写一写这个东西。怎么怎么写呢?应该要考虑一个情况,就说如果是。如果是什么呢?如果是第一个。这条链表的如果是,呃,第一个雇员。那我们单独的处理一下if。If什么呢?had.had如果它had就等于这个nor。好,说明,呃,你开篇辟地,第一个雇员来了,那简单,我就直接head指向我们这个雇员就完事了,那直接return。
07:01
这个大家看能不能理解。对吧,第一个雇员来了,就他们,那如果是后面的雇员呢,这个害不能动。我们得找一个辅助,辅助指针还还有印象吧,哎,然后后面呢,就定义一个辅助指针。为什么要定义辅助指针指针呢?因为这个head不能动,动了以后便历都便离不出来,对吧?第一个辅助指针那怎么写呢?我们就这样写啊,比如就写个temp啊,就写个temp或current都可以,Val。比如说current。Current这个这个等于什么呢,还。那现在呢,就用它来来帮助我们找到最后,那现在我们写一个循环。啊,外循环。你看现在这个套路大家就比较熟悉了,什么情况才表示我们这个找到最后了呢?对,只要current。要要点的吗?哎,是不是current.next。
08:04
它如果等于了这个no是不是代表我们这个已经到最后了。对吧,到。诶不,咱们不要这样判断啊,不要这样判断应该怎么写啊,对可以了,对这样是没问题的,就这样写,Break就退出。啊,否则的话,这个cover是不是往下移动一下。这里我就不做过多的注释了,同学们,前面我们写过很多注释,然后呢,我在这里import我们的ut.ctrl.breaks点下划线。好,同学们,整个呢,我用break able把它包起来。各位抱起来,那那大家想一想,当我们呃。当我们出了这个break循环过后,这个current其实就是指向了这条链表的最后一个节点,对吧?这是肯定的,这时这时Karen是指向了。
09:04
链表的链表的最后这个能理解吧。肯定是这样子,那我就要做一件事情,Current next指向我们这个employee就完事了。好的,那同学们看这个代码添加就写完了,没有任没有什么问题吧。
我来说两句