码迷,mamicode.com
首页 > 其他好文 > 详细

双向链表插入节点

时间:2017-09-13 00:26:52      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:指针   logs   双向链表   目的   有一个   images   存在   节点   实现   

双向链表插入节点

技术分享

如图所示是我们要操作的结构体和在双向链表的图。

现在我们的目的就是在ab节点之间插入x节点。

现在我把这六条线都遍上号:

技术分享

在插入之前,2,6这两条边是存在的,这两条边就是:

技术分享

 

在插入之后,2,6这两条边不存在了,存在的边为4,1,3,5,这四条边就是:

技术分享

 

所以要想实现在a,b节点中插入x节点,也就是实现

 技术分享

 

技术分享

在这个图中,1和6是同一条边,都是a->next,3和2是同一条边,都是b->pre.

 

现在我们是通过p指针在这个双休链表中找到了b节点,也就是p==b的,并且我们有一个x节点是待插入的。

在这种情况下,我们找a节点就只能通过p节点,p->pre就代表a。

显然2这条边就是p->pre,所以我们要想找到a节点,就必须有2这条边。

而1,4两条边的操作都和a节点有关。

所以我们要想操作1,4两条边,就必须有a节点,也就是2这条边。

5这条边的插入顺序很自由,因为我们的x节点和p节点都是已知的。

所以我们的一个插入顺序为这样:

1、先拆第6条边,接上第一条边:技术分享

2、然后接上第4条边:技术分享

3、然后接上第5条边:技术分享

4、最后拆除第二条边接上第三条边:技术分享

 

 大工告成。

说一句,这个循序不是唯一的,比如说5这条边我可以在任意时候插入。

并且如果p节点现在不是指向b,而是指向a,那么一切又都变化了,所以重在理解吧。

 

双向链表插入节点

标签:指针   logs   双向链表   目的   有一个   images   存在   节点   实现   

原文地址:http://www.cnblogs.com/Renyi-Fan/p/7512789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!