4.在双向循环链表中, 在p所指的结点之后插入s 指针所指的结点, 其操作是 ______.

[复制链接]
查看11 | 回复3 | 2008-11-7 22:42:21 | 显示全部楼层 |阅读模式
4.在双向循环链表中, 在p所指的结点之后插入s 指针所指的结点, 其操作是 ______.
(A) p->next=s;
s->prior=p;

(p->next)->prior=s;s->next=p->next;
(B) s->prior=p;
s->next=p->next;

p->next=s;
p->next->prior=s;
(C)p->next=s;
p->next->prior=s;

s->prior=p;
s->next=p->next;
(D)s->prior=p;
s->next=p->next;

p->next->prior=s;
p->next=s;
选哪个,请说明原因。为什么要那样?

回复

使用道具 举报

千问 | 2008-11-7 22:42:21 | 显示全部楼层
A就是正确的,让P的后指针指向S,让S的前指针等于P,也就是指向P所指的结点.然后让P的后指针所指的结点(也就是P后边的那个结点)的前指针指向S,让S的后指针等于P的后指针,这样就把S所指向的结点插到P所指向的结点后边了,画个图就好理解了,把P和P后边的结点,还有S都画出来,按照语句挪一下指针就明白了....
回复

使用道具 举报

千问 | 2008-11-7 22:42:21 | 显示全部楼层
选择D你最好能画个指向图为什么不能选A呢错在 (p->next)->prior=sp->next 已经指向s了 那么 p->next 也就是s 而 s的prior 又赋值s这是很明显的错误正确的算法应该是首先应该让P的后继节点和S关联然后再把P跟S关联...
回复

使用道具 举报

千问 | 2008-11-7 22:42:21 | 显示全部楼层
个人认为选D,只有先将S的前驱以及后继分别指向了P以及P的后继之后,才能去改变P的后继、P的后继的前驱所指向的结点。...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行