一个关于单链表插入结点的问题

over301 2009-11-18 09:05:25
设单链表中结点的结构为
typedef struct node{//链表结点定义
elentype data;//数据
struct node *next;//结点后继指针
}listnode;


已知指针p所指结点不是尾结点,若在*p之后插入结点
*s,则应执行下列哪一个操作( )

它的选项是()
(A)s-->next=p; p-->next=s;
(B)s-->next=p-->next;p-->next=s;
(C)s-->next=p-->next;p=s;
(D)p-->next=s;s-->next=p;

书中的答案是这样的:
选择(B) ---P13.2

____________________________
我的问题是:
我认为应该选择(D)啊,即是

←————
↓ ↑
p-->s—→


是我的理解错误,还是书中的答案错误了呢,恳请热心人帮忙指教,谢谢
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlx20093A 2009-11-20
  • 打赏
  • 举报
回复
B 1新结点s指向 原结点p的下一结点(s->next=p->next)
2原结点p指向新结点s(p->next=s)

裸奔的蜗牛 2009-11-19
  • 打赏
  • 举报
回复
就是B,s-->next=p-->next;p-->next=s;很基础的
菜鸟二号 2009-11-18
  • 打赏
  • 举报
回复
接上:p是3节点,因此选择B :1->2->3->4->5...
菜鸟二号 2009-11-18
  • 打赏
  • 举报
回复
(D)p-->next=s;s-->next=p
你d如果选择这个的话,那么原来的p->next的值就会丢失不是么,所以最后的结果就是:假如链表是:1->2->3->5..插入4变成了1->2->3->4->3...
kuruby 2009-11-18
  • 打赏
  • 举报
回复
是B。
s-->next=p-->next; //让s指向P的下一个结点
p-->next=s; //p的下一个结点为s
个人觉得这样比较安全一点,先让S指向下一个结点,在让S真正插入链表。
wuyu637 2009-11-18
  • 打赏
  • 举报
回复
就是B

S的next应该是p原来的next

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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