00:00
好,同学们,下面呢,我们来完成一下这一个单链表的修改。修改,那么,呃,假如我们给了一个新的节点,我们希望把这一个英雄人物的名字或昵称进行一个修改,那么我们看看怎么完成啊。啊,当然编号我们不能改,编号如果改的话,那相当于添加了,对吧,你你比如说你你把这个编号都改了,你说有一个一号人物,我要把它改成二号人物,那那这个其实就相当于添加,所以我们修改呢,是编号不变,名字和昵称可以改变,好现在我们来做一个这样的操作啊,我们来做这样一个操作。好,现在呢,我们直接在这个代码里面给大家完成就可以了,找到这里。好,我们往下拉。我们来完成一个添加。啊完成啊,就是修改啊,修改节点,修改节点的信息,那么我们有一个信息不能变,变化就是根据什么呢?我们根据根据编号。
01:05
编号来修改,即我们要求N。这个编号不能改。如果你这个改了,那就相当于添加明白我的意思吧,好,那现在呢,我们来做这样一个操作,那就开始写了啊,Public void update,首先呢,你给我一个新的,要新的节点的信息你得给我,对吧,我就写一个new,一个hero node。那我根据你干什呢?我根据你这个新节点的编号来修改,我这里做一个说明。说明啊,就是根据,根据什么呢?New he load load的。No的这个no来修改,来修改即可。好,那现在这个代码,因为很简单,我这里就不分析了啊,首先呢,我们先判断是否为空。
02:01
就是链表是不是空的,大家写一句话,如果had had点。had.next它等于no,说明这个链表为空,就现在呢,没有一个节点,是不是我就直接写一个叫链表为空完事啊,链表为空,那列表为空呢,我们就不往下走了,直接return就可以了,那现在呢,我们就来开始找了,如果不为空,我们就找到,找到需要修改的这个节点。行啊,那么首先呢,我们刚才已经了是根据这个no编号来找的,那同样我们是不是老规矩,先要定一个辅助节点。是不是要一样的道理嘛,是先定义定义一个辅助变量,辅助变量呢?还是跟刚才一样,我们直接这样写就行了,Hero node temp,让它指向我们hide.next。
03:03
是不是好,现在呢,我们写一个bull波值来测试一下,比如说这个值是代表什么,是否找到了。啊,表示是否找到该节点。因为你没有找到,你就不能修改嘛,对吧,那就是Y循环。处我就快速的写啊,因为比较简单处我用外循环,那现在呢?如果我们在查找过程中temp等于空了,说明什么?因为我这个temp是指向next.head.next也就说temp直接指向这个节点的,如果temp等于空,说明我们现在是。到了,到哪里了?到电表的最后。是不是已经到了到了temp链表的最后这个节点的下一个了,就是链表遍历完毕了,应该说啊,它已经这个temp等于空,它已经不是链表的最后一个节点了,而是链表已经表示链表已经遍历,遍历结束了啊。
04:02
大家理解我在说什么啊,都是已经已经遍历完便完这个链表了,能理解吗?好,那如果说没没有到这块,我们就比较嘛,就temp.no。它如果等于我们传进来的这个hero load。啊661个hero啊六的新的hero no说明什么,我找到了,说明是不是这个这个temp,当前这个temp指向的节点就是我们要去修改的这个节点,那这去写个找到了,找到的话呢,我们直接把这个flag。F flag啊,Flag,我们把它置为一个处,表示找到,找到也就退出。对吧,找到也就退出,否则的话呢,我们让这个temp不停的往后面走。那当我退出循环过后呢,这里面有两种可能,第一种就是。
05:04
就是编辑完了还找不到,还有一种可能就是找到了再退出的,是这意思吧,所以说我们现在呢,要根据根据什么呢?Flag判断。判断,判断是否找到这个要修改的节点。能理解我的意思吧,好,那就经过这个一个判断flag,如果这个flag等于true说明什么?说明我们要去修改,那就很简单了,就temp点它的名字等于的这个节点的名字不就改过来了吗?然后temp点它的昵称等于新的这个节点的昵称的信息就改完了。编号不能改啊,编号等不改,改完了过后还有一种可能性,Else,就是你这个flag经过刚才一个Y循环,仍然等于false,说明什么?说明根本没有找到,这个要修改节点,就是没有这个节点要没有找到,没有找到,没有找到的话呢,我们最好给他一个提示信息。
06:08
怎么提示呢,咱们还是格式化啊,我们提示他说没有找到,找到编号等于这个的节点。啊,那就不能修改,不能修改好同样一个换行符,那么你要修改这个节点的编号是多少呢,就它。就说你要找,你想把这个这个节点修改,但是我没找到。好,同学们,这个就是修改的代码,我们来测一下啊,我们来测一下,那也很简单,同学们,我们这样测一把。怎么测试呢?我们测试修改节点的代码。啊,代码很简单啊,很简单。代码。好,现在呢,我这样做,比如说我准备把卢俊,卢俊义二号人物这个卢俊义,卢俊义的名字和他的这个昵称做一个调整,我怎么改呢?首先我先创建一个新的节点。
07:09
New hero好还是二号?我要把这个卢俊义改成什么呢?我把名字改成小卢。啊,小卢。然后呢,它的名称原先叫玉麒麟是吧,现在呢,我给他来个小尾巴,就是把它改成小卢,同时呢,昵称改成玉麒麟两个波浪号,那我怎么改,非常简单,Single点什么呢?Update,我把这个新节点放进去就可以了。对不对,好,这样子同学们,我们在修改之前显示一下。修改之前显示一下,我们在修改过后呢,再显示一下这个列表,这样就能看出它的区别,修改后的链表情况。没问题吧,好,现在呢,我们再次输出single.list注意看它的变化有没有。
08:04
走一个,来同学们看,首先呢,首先我们看到原先卢俊义是这样一个信息,二号名字卢俊义,昵称玉麒麟,现在变成小吴了。昵称。玉麒麟两个波浪号,说明目前我们这个update语句update update这条,呃,这个方法呢,是没有问题的。好同学们,那关因为这个修改的比较简单,所以说我就没有画图了,因为也很好理解,就找到它,把它的名字和昵称替换一下就可以了,或者要重置一下就可以了,好同学们,关于修改这段代码呢,就给同学们讲解到这里。
我来说两句