00:00
好,同学们,我们接着刚才这个单项列表来去学习,那刚才我们讲了单项列表的便利,还有添加的两种方式,对吧,那现在我们来完成下一个什么呢?就是它的一个修改。和删除,我们先写一个修改吧。好,先写一个修改。嗯,那这个修改怎么来实现呢?我写一种方法,留一种方法留给同学们去实现啊。我写一个修改的一个方法,那我写到上面吧。小上面。修改节点。修改这个链链表,修改节点的值。假如我们有这么一个需求。那我去写个update。那你既然要修改这个节点的值,肯定你要给我传进来一个新的又一个hero的一个。No,对吧,然后呢。
01:01
我在这地方呢,就来做一个操作。就来做一个操作,Update。嗯,怎么做这个事儿呢。你既然要修改,那首先你得。去找有没有这个load。你先得找到他,如果这个比如说你。这个你肯定修改,你肯定是根据根据这个no,就是它的一个编号来修改的,对吧,就说编号肯定是不能不能改,比如说你要去修改,比如说这个一号,他名字改了,不叫宋江了,叫张三。那这个编号肯定有一个不能改。那如果所有都改,那就不叫修改了,就添加了。是吧,所以说我们讲我们这个在修改的时候,是根据NN的这个编号为根为为这个基础啊为标准为这个,为这个为这个。为什么呢,为这个。前提或者为为这个前提来修改的。
02:02
修改。就是编号不能及什么呢?及这个编号不能改。不能改。好,那现在我们首先第一个动作先找到它。先找到。先找到这个节点。那找的时候有可能就没有这个节点,所以说你都要考虑进去,那找的时候我们怎么找呢?那也很简单,我们这样找就可以了,就是我我写一个temp节点帮助我们来查找,还是把hide给他。但是因为你在修改的时候。这种方式是这样子的,我们直接就去比较值,所以说我这写的是had next。Head next,因为这个地方我来做一个判断嘛,对吧,所以说我还先写,如果这个是空表,空链表,咱们也就不能修改了,所以说如果hide.next等于。
03:00
这个nor说明这是个空链表,我们就不能改。链表为空,链表为空不能修改,那就直接return。回去就可以了。那否则的话呢,我就把head ne交给这个temp,交给temp就开始循环的便利。还有一个问题啊,这边还有一个问题,就是我们还得做一个标记。到代表到底找到了没有?如果没有找到我们也不能改。所以说flag。我默认是怎么样呢?找不到的我默认找不到。但你也可以是默认找得到啊,这个看你的一个逻辑,我就开始用Y循环了。处。嗯,那么我在这个循环的时候,我就先判断,如果这个temp它等于了no,就说明。找到这个,呃,结结束了就肯定就没找到嘛,如果temp都已经,诶,如果temp等于。冒了,那说明肯定就没找到。
04:02
是吧,肯定就没找到,如果你上来过后,你就害交给他是空,那肯定就找没找到就说没找到,否则的话,我们判断一个这个逻辑,如果什么呢?就是temp点。他的这个no。N等于。等于什么呢?等于你的这个新的这个节点的no。这说明就找到一个值就找到了。找到,那如果找到的话呢,我们这也退出,同时我们把这个什么呢,把这个当然你也可以在这直接修改也行哈,我就看你怎么去思考,我我这呢,就专门用用一个功能值来查找。好,然后我们把这个flag置为一个处,就表示我找到了。好,最后如果这两个条件一直没有的话呢,我就往下继续走,就是temp等于。
05:00
下一个就是next。就是寻,就是不停的往下找。好,然后这段代码呢,我们仍然用break able把它包下。把它包一下。好,包起来,包起来过后同学们,那现在只要出来这个地方就要判断了,到底能不能修改呢?我们再来判断一下,判断是否找到。那就这样写了。如果。这个flag为真说明找到了。说明找到找到那你就修改就行了,因为我们这儿只是修改这里面的值,我这种方式呢。直接把值修改就行了,还有一种方式就是把整个节点替换。如果替换整个节点,那么同学们想一想怎么去实现啊,我现在是修改的值,那找到就直接把这个temp的值修改就行了,那就是把name等于你新的这个里面的name,再把temp点你的claim。
06:02
等于新的节点里面的。改完就可以了,其他不用改变,因为你只要是你只希望改变这个值嘛,否则如果这个flag它仍然等于false说明。你是没有找到的,没有找到那就提示一句话,就说没有找到编号没有找到啊。今儿咱们打一句话。就说。没有找到这个编号为这么多的。节点。节点无法修改啊,不能修改。不能修改。是一个不能修改。那不能修改的话呢,我把这个节点的no给他打出来就可以。同样,为了好看,我们把这写一个西恩。好,我们看看这个逻辑啊,按这个逻辑是怎么走的,首先我先判断链表为不为空,如果为空的话,我就不用再去往下走了。
07:00
然后呢,我把这个temp如果不为空,那就把temp,把这个head next交给temp。同时呢,这做了一个变量,就是判断是否找到了。那么就循环找,先判断temp等等不等于空,好如果这个temp等于空,那说明这个地方只要只要是从这break出去的,那肯定这个flag就是没找到了,就是整个全部都查完了,都没找到吗。对吧,那现在呢,否则这个temp点这个no对吧,No,它如果等于它就说明找到了,找到我就break出去,然后这个条件没有满足的话呢,我就继续往下走,直到这两种条件有一个条件成立。好,最后我来判断是否找到进行修改,好我们现在来玩一把,那现在呢,同学们看到啊,我我还把它改成这个第一种形式,第一种形式好看顺序好,大家看1342,这样我看起来比较清晰一点,就是我这按这个添加顺序来看,那现在比如说我要把这个二号改成无用,改成无用,因为。
08:06
二比如说这个吴用是排行为几的?吴用是排号为三的,我们就把这个三号宋江为三改成吴用智多星,那同学们看一下我怎么处理?好,现在呢,首先我肯定根据刚才这个设计理念,我们就先写一个新的节点。比如说介绍三。了,他是不用。然后呢,智多星智智多星好写完,然后呢,给他来一个变量,各位同学,那这边写一个叫做呃,Hero hero5吧。HERO5,然后现在呢,我要。诶。这个地方VR。Hero。Hero。五。然后呢,我把这个节点就直接。交给这个单链表进行一个update,我要更新的是哪一个呢?Hero。
09:04
好,这时我们更新完了过后我们再输出一下。好同学,某个字打一句话啊。我们为了好看呢,这样输出一个间隔符号,然后single.list我们比较这两次输出的结果有没有变化。我们执行一下。好,当我们执行完过后,我们发现这个原先送编号为三的呢,改成无用和智多星了,这种方式还有一种方式,同学们,待会儿我会留点时间让你们想一想啊。如果要把整个节点进行替换,又怎么实现?我这留一个留一个思考题,就是update,我这是直接改值的,那么我这留一个题。有一个课后。课后思考题。这四号题是干什么?就是如果整个将。
10:00
将整个节点替换掉。替换。替换如何如何实现,也就是说我们找到这个节点,我们直接把这个对应的原先那个节点直接给它去掉。直接把它指向一个这个新的节点,不也相当于。改变了吗?那这个呢,同学们在课后的时候想想怎么实现也不是很难。好,这个就是这是我们这个单链表的一个修改,我截段视频。
我来说两句