正确答案是D
A:
p->next=s;
s->prior=p;
p->next->prior=s; //前面执行了p->next=s;这句,那么p->next->prior=s等价于s->prior=s,显然是错误的
s->next=p->next;
B:
p->next=s;
p->next->prior=s; //和A的错误相同
s->prior=p;
s->next=p->next;
C:
s->prior=p;
s->next=p->next;
p->next=s;
p->next->prior=s; //执行了上一句p->next=s之后,p->next->prior=s等价于s->prior=s,显然错误
只有D的答案是正确的
直接根据“先连后改”原则,
首先这是在节点后插入S,S节点应先连上俩个节点(S的指针指向这俩个节点),即P节点和P节点的Next;然后再改值,将P节点的Next的指针指向S节点,最后将P指向S节点。
改值这一步骤中,若修改次序,将会导致指针的指向有问题,可以推一下就可以看出来了