双向链表插入结点的理解。
这几天集中时间看了下单双链表的内容,发现双向链表的插入很难理解,今天恍然大悟,最重要的部分就是如何使得你的代码跟你的作图能够吻合起来,这样就不用死记硬背。
下图为双向链表的插入,知乎里偶然看见的一张图,这几步操作也非常明了,只是我图中画的不是很准,我都用红色箭头做了修改,这样就一目了然了。
总体来讲,要将s结点嵌入到双向链表中,需要切断并重新连接两根线,还要再额外连两根线,看图四,非常明显总共动了4根线,所以用了4条语句来做插入
1. s->next=p->next
这边p->next其实就是后面一个节点x,而不是x->pre,但图画的感觉像x-pre
2. s->prior=p
这步没什么问题
3. p->next=s
箭头也画的不好,画的像s->pre,其实是s
4. s->next->prior=s
s->next其实就是后面的一个节点x,所以就是x->prior连接了s
所以做完第三四步之后,就看到s和p连接上了,s和x也连上了。