算法与数据结构【30天】集训营——线性表之易混淆知识点双链表的结点前插和后插(05)

网友投稿 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小时内删除侵权内容。

上一篇:Python 面试题(python是什么意思)
下一篇:vue深入响应式原理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~