问题 单项选择题

假设双链表结点的类型如下:
Typedef struct linknode
int data; /*数据域*/
struct linknode *llink; /*llink是指向前驱结点的指针域*/
struct linknode *rlink; /*rlink是指向后续结点的指针域*/
bnode
下面给出的算法段是要把一个q所指的新结点作为非空双向链表中的p所指结点的前驱结点插入到该双链表中,能正确完成要求的算法段是 (32)

A.q->rlink=p;q->llink=p->llink;p->llink=q;p->llink->rlink=q;

B.p->llink=q;q->rlink=p;p->llink->rlink=q:q->llink=p->llink;

C.q->llink=p->llink:q->rlink=p;p->llink->rlink=q;p->llink=q;

D.以上都不对

答案

参考答案:C

解析:

[分析]:
本题考查链表的操作问题。
在链表中插入一个结点时,首先需要确定插入的位置,题目中是插入在p结点前面,因此,需要把插入结点q的rlink指向p,q的llink指向p的llink。然后,需要把p的llink指向q,p的前驱结点的rlink也指向q。

单项选择题 共用题干题
单项选择题 共用题干题