题15

题目

Q:在双链表中向 p 所指的结点之前插入一个结点 q 的操作为 ( )。

A.

p->prior=q;
q->next=p;
p->prior->next=q;
q->prior=p->prior;

B.

q->prior=p->prior;
p->prior->next=q;
q->next=p;
p->prior=q;

C.

q->next=p;
p->next=q;
q->prior->next=q;
q->next=p;

D.

p->prior->next=q;
q->next=p;
q->prior=p->prior;
p->prior=q;

分析

A:
始终要保证能找到插入的后继,因为插入的后继和它的前驱唯一关联
A选项里面P的前驱被赋掉以后就找不到 p 了

D
为了在 p 之前插入结点 q ,可以将 p 的前一个结点的 next 域指向 q ,将 qnext 域指向 p ,将 qprior 域指向 p 的前一个结点,将 pprior 域指向 q 。仅 D 满足条件。