问题详情

假设双链表结点的类型如下: 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、以上都不对

时间:2022-01-12 23:37 关键词:

答案解析

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