鱼C论坛

 找回密码
 立即注册
查看: 1415|回复: 4

[已解决]一个双向链表的问题

[复制链接]
发表于 2017-4-4 22:14:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在一个双向循环链表中,指针p所指向的节点(非尾节点)之后插入指针s指向的节点
我是不太明白顺序,看解析说顺序不对会断开链表,谁可以给我具体说说吗

s->pre = p;
s->next = p->next;
p->next->pre = s;
p->next = s;
最佳答案
2017-4-4 22:48:38
假定原先p的下一个结点是x 那么p->next == x , x->pre == p
第一句s->pre = p; 这一句不难理解吧 把新插入的结点 的pre指针指向p
第二句s->next = p->next; 因为s是要插入p和x中间,那么s的next指针肯定是指向x 因为p->next == x 所以s->next=x,因为这个时候x结点时未知状态 所以使用p->next代替
第三句p->next->pre = s; 因为p->next == x , x->pre == p那么相当于 x的pre指针原先指向p,现在指向新结点s,这个时候就完成了s结点与x结点的联系,这个时候剩下p的next结点还是指向x因此就有了第4句
这样解释能懂不?
建议画图很容易就能理解的加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-4 22:48:38 | 显示全部楼层    本楼为最佳答案   
假定原先p的下一个结点是x 那么p->next == x , x->pre == p
第一句s->pre = p; 这一句不难理解吧 把新插入的结点 的pre指针指向p
第二句s->next = p->next; 因为s是要插入p和x中间,那么s的next指针肯定是指向x 因为p->next == x 所以s->next=x,因为这个时候x结点时未知状态 所以使用p->next代替
第三句p->next->pre = s; 因为p->next == x , x->pre == p那么相当于 x的pre指针原先指向p,现在指向新结点s,这个时候就完成了s结点与x结点的联系,这个时候剩下p的next结点还是指向x因此就有了第4句
这样解释能懂不?
建议画图很容易就能理解的加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-4 23:01:41 | 显示全部楼层
lumber2388779 发表于 2017-4-4 22:48
假定原先p的下一个结点是x 那么p->next == x , x->pre == p
第一句s->pre = p; 这一句不难理解吧 把新插入 ...

我自己琢磨了一下知道了,看来还是no pic say a jb啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-4 23:16:52 | 显示全部楼层
micheal1 发表于 2017-4-4 23:01
我自己琢磨了一下知道了,看来还是no pic say a jb啊

需要我画给你吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-5 12:33:47 | 显示全部楼层

不不不   知道版主流弊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 02:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表