简单双向循环链表问题

ligen1123 2011-10-29 07:56:18

在节点p后插入节点s
s->prior=p;
s->next=p->next; //这个是正确的
p->next->prior=s;
p->next=s;


p->next=s;
s->next=p->next;
s->prior=p; //这个为什么不对??? 只是代码的顺序不同,为什么结果不对,也没有发现哪里逻辑不对啊,,
p->next->prior=s
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ligen1123 2011-10-29
  • 打赏
  • 举报
回复
s->next=p->next
s指向了本身,
p->next->prior指向s q后面掉了,,

但会一直不停的指向s本身,而出现死循环,,,,,
叮咚 2011-10-29
  • 打赏
  • 举报
回复
当然不是
假设开始p->next=q;
但是当你第一句p->next=s;时
p->next是指向s的
所以s->next=p->next;
不能让你实现s->next=q;因为此时p->next指向的是S,此时不再是q啦
ligen1123 2011-10-29
  • 打赏
  • 举报
回复
想出来,,了,,这样也不是掉链吧,,
而是无限制的插入节点s,s所指针还是同一个内存区。
ligen1123 2011-10-29
  • 打赏
  • 举报
回复
按你这样说,还确实错了,,,
p->next=s;
s->next=p->next;
但这两句,的确没错啊,, s->next=p->next 不就是p ->s ->q吗 假设p->next为q的话,,,
Kai_gai 2011-10-29
  • 打赏
  • 举报
回复
在链表的插入时 你的保证后面的链不能掉了;如LZ所说p->next=s;这样操作就将原链表中p节点后的链表给丢了,s->next=p->next;就直接指向了s节点,出现了掉链现象。在链表操作中,有的顺序是不能随意改变的,这需要LZ自己静下心来仔细想,不要一出错就跑来问,那样没多大用的。
叮咚 2011-10-29
  • 打赏
  • 举报
回复
p->next=s;
s->next=p->next;
s->prior=p;
p->next->prior=s;

你看第一句 p->next=s;
第二句 s->next=p->next;
相当于 s->next=s;
这必然错了呀

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧