首页 > 试题广场 >

在一个双链表中,在*p结点之前插入*q结点的操作是()。

[单选题]

在一个双链表中,在*p结点之前插入*q结点的操作是()。

  • p->prior=q; q->next=p; p->prior->next=q; q->prior=p->prior;
  • q->prior=p->prior; p->prior->next=q; q->next=p; p->prior=q->next;
  • q->next=p; p->next=q; q->prior->next=q; q->next=p;
  • p->prior->next=q;q->next=p;q->prior=p->prior=p->prior;p->prior=q;
D。不过第三个式子多写了个p->prior。
若要在结点p,q之间插入一个结点c,若此时指针指向p,即在p结点之后插入新的结点c:
顺序是( p->next->pre=c; c->next=p->next; c->pre=p; ) p->next=c; 括号里的三个交换顺序不会影响结果;
若此时指针指向q,即q结点之前插入新的结点c:
顺序是( q->pre->next=c; c->pre=q->pre; c->next=q; ) q->pre=c; 括号里的三个交换顺序不会影响结果;
之所以会有上述顺序的一些要求,是因为在插入的过程中顺序不当会丢失下一个结点的地址,而链表是分散存储的,无法向数组一样知道一个地址就可以找到下一个数的地址。
编辑于 2017-09-05 19:23:36 回复(0)
b
发表于 2017-03-28 23:30:01 回复(1)