双向循环链表中,在p所指向的结点之后插入s指向的结点,其修改指针的操作是( ),其中p指向的不是最后一个结点。

admin2019-06-12  30

问题 双向循环链表中,在p所指向的结点之后插入s指向的结点,其修改指针的操作是(    ),其中p指向的不是最后一个结点。

选项 A、p->next=s;s->preV=p;p->next->prev=s;s=>next=p->next;
B、p->next->prev=s;p.>next=s;s->prev=p;s->next=p->next;
C、s->prev=p;s->next=p->next;p->next=-s;p->next->prev=s;
D、s->prev=p;s->next=p->next;p->next->prev=s;p->next=-s;

答案D

解析 其插入方法如图1.4所示。
一般情况下,做此类题的一个捷径是判断代码“p->next=s”后是否还有通过指针“p->next”访问p以前的直接后继的引用,有则错误。因为一旦执行完代码“p->next=s”,p的直接后继就更改为s,此后“p一>next”不再是p以前的直接后继。例如,试题中A、B和C选项均在“p->next=s”之后使用了“p->next”,所以选项A、B和C错误,根据排除法,选项D正确。另外,建议考生在编写插入代码时,将“p->next=s”写成插入算法的最后一步。
转载请注明原文地址:https://jikaoti.com/ti/g0f7FFFM
0

随机试题
最新回复(0)