c语言sscanf函数的用法是什么
253
2022-08-23
算法与数据结构【30天】集训营——线性表之易混淆知识点双链表的结点前插和后插(05)
目录
双链表的插入
P结点后插入新的结点S(后插案例)P结点前插入新的结点q(前插案例)
每文一语
双链表的插入
在双链表的插入操作,我们比较头疼的就是,明明选项看着答案都是比较的完整,但是为啥就是选不正确呢?问题可能出在你的顺序问题上。
双向链表的插入其实并不复杂,只是在原有单链表的基础上多了连接一个向前的指针而已。但是需要注意的是操作的顺序很重要,不可以写反了。
P结点后插入新的结点S(后插案例)
s->prior=p; //把p赋值给s的前驱s->next=p->next;// 把p->next赋值给s的后继p->next->prior=s;// 把s赋值给p->next的前驱p->next=s; //把s赋值给p的后继
切记顺序不可以记错 在写代码的时候可以将操作步骤画出来,理清实施步骤的顺序。
总而言之就是,后插问题上,首先我们需要画出它的插入操作顺序图,第一步是将S的前驱链接在P之后,然后在P的后驱链接在P原来的后驱的前驱,第三步就是P原来的后驱的前驱等于S,P的后驱等于S
先后顺序,不能搞反了,总的来说就是为了原始的地址不会被遗漏,换言之在双链表的插入当中不能操作指针域的丢失,如果我们直接就是执行P->next=S,那么就会丢失P原来结点后的元素,所以说顺序是非常重要的
至于我们应该如何去记忆这种顺序呢?我总结了一个,当我们进行P后插的时候,一定要将P->next =S 最后一个执行,其他的顺序你可以自己变化,但是我推荐记住上面的
P结点前插入新的结点q(前插案例)
前插,我们需要注意的我们知道P的指针,这个时候P的prev是已经知道且固定的,并且我们在操作中需要用到的所以这个时候,我们就不能提前将P的prev改变编程q,换言之就是这一步应该是最后一步。
这也等价于前面在执行后插的时候,P的next是已知的,不能将P的next放在前面执行,需要放在最后执行。把握好这一原则,在双链表的插入操作当中,应该是比较清晰了。
上面的顺序,以及不可变的操作顺序,需要我们熟记于心,这样就可以对此类考点,游刃有余了
每文一语
知识点的混淆总是让人彻夜难眠
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~