【题目描述】 (9)双链表的每个结点包括两个指针域。其中 rlink 指向结点的后继,llink 指向结点的前驱。如果要在 P 所指结点前面插入 q所指的新结点,下面哪一个操作序列是正确的? A)p.rlink.llink:=q;p.rlink:=q;q.llink:=p;q.rlink:=p.rlink; B)p.1link.rlink:=q;p.llink:=q;q.rlink:=p;q.llink:=p.llink; C)q.llink:=p:q.rlink:=p.rlink

题目

【题目描述】

 (9)双链表的每个结点包括两个指针域。其中 rlink 指向结点的后继,llink 指向结点的前驱。如果要在 P 所指结点前面插入 q所指的新结点,下面哪一个操作序列是正确的?

A)p↑.rlink↑.llink:=q; p↑.rlink:=q;   q↑.llink:=p; q↑.rlink:=p↑.rlink;

B)p↑.1link↑.rlink:=q;  p↑.llink:=q;  q↑.rlink:=p; q↑.llink:=p↑.llink;

C)q↑.llink:=p:q↑.rlink:=p↑.rlink;  p↑.rlink↑.llink:=q; p↑.rlink:=q;

D)q↑.rlink:=p;   q↑ .llink:=p↑ .llink;  p↑.llink↑.rlink:=q; p↑.llink:=q;

 

 

 

参考答案和解析

正确答案:D

 

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在线性链表的插入算法中,若要把结点q插在结点P后面,下列操作正确的是:( )

A.使结点P指向结点q,再使结点q指向结点P的后件结点

B.使结点q指向P的后件结点,再使结点P指向结点q

C.使结点q指向结点P,再使结点P指向结点q的后件结点

D.使结点P指向q的后件结点,再使结点q指向结点P


正确答案:B
在修改结点指针域的操作中,有一个操作顺序的问题。比较选项A和B只是操作顺序颠倒了-下。A中先使结点p指向q后,q就成为P新的后件结点了,原先通过结点P指向的后件结点与结点P脱节了那么后面的-步操作没有任何意义的:使结点q指向P的后件结点即使结点q成为自己的后件结点。按照B指定的顺序操作就不会出现在引用结点p的指针域之前已经把它的值修改了的情形。至于C和D项是命题者设计的干扰项想让考生把P和(1的顺序搞混。
总结,做这种类型的试题,最好画图。插入结点:若结点p的后面是结点s,要在p和s之间插入结点q,-般先将结点q指向结点s,再将结点p指向q,顺序不能颠倒。删除结点:若结点p的后面是结点q.结点q的后面是结点s,若要删除结点q,只需将结点p指向结点s即可。

第2题:

单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插人到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的?

A.q:=p^. link; p^.Link:=q^.link;

B.p^.link:=q^.1ink; q:=p^.1ink;

C.q^.link:=p^.link; p^.1ink:=q;

D.p^.1ink:=q; q^.link:=p^.link;


正确答案:C
解析:单链表是链式存储的线性表,它的每个结点中包括一个指针link,它指向该结点的后继结点的位置。将指针q指向的新结点插入到指针P指向的单链表结点之后的操作步骤是将指针P所指向的地址赋于q,将q的值赋于日向的地址,其运算表达式为q^.link:=p^.link;p^ link:=q。

第3题:

( 11 )双链表的每个结点包括两个指针域。其中 rlink 指向结点的后继, llink 指向结点的前驱。如果要在 p 所指结点前面插入 q 所指的新结点,下列哪一个操作序列是正确的?

A ) p ↑ . rlink ↑ .llink:=q ; p ↑ .rlink:=q ; q ↑ .llink:=p ; q ↑ .rlink:=p ↑ .rlink ;

B ) p ↑ . llink ↑ .rlink:=q ; p ↑ .llink:=q ; q ↑ .rlink:=p ; q ↑ .llink:=p ↑ .llink ;

C ) q ↑ . llink:=p ; q ↑ .rlink:=p ↑ .rlink ; p ↑ .rlink ↑ .llink:=q ; p ↑ .rlink:=q ;

D ) q ↑ . rlink:=p ; q ↑ .llink:=p ↑ .llink ; p ↑ .llink ↑ .rlink:=q ; p ↑ .llink:=q ;


正确答案:D

第4题:

双链表的每个结点 包括两个指针域。其中rlink指向结点的后继,llink指向结点的前驱。如果要在p所指结点后插入q所指的新结点,下面操作序列正确的是( )。A.p↑.rlink↑.llink:q;p↑.rlink:=q;q↑.llink:=p;q↑.rlink:p↑.rlink;B.p↑llink↑.rlink:q;p↑.llink:=q;q↑.rlink:=p;q↑.llink:p↑.llink;C.q↑.llink:=p;q↑.rlink:=p↑.rlink;p↑.rlink↑.llink:=q;p↑.rlink:=q;D.q↑.rlink:=p;q↑.llink:p↑.llink;p↑llink↑.rlink:q;p↑.llink:=q;


正确答案:C
设p所指结点为A,q所指结点为B,将A结点的右指针指向B结点,B结点的左指针指向A结点,右指针指向A结点原来的下一结点(设为C),C结点左指针指向B结点。

第5题:

单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针P指向的单链表结点之后,下面的操作序列中正确的是( )

A)q;=p↑.link;p↑.link:=q↑,link;

B)p↑.link.q↑.link;q:=p↑.link;

C)q↑.link::p↑.link;P↑.link:=q;

D)P↑.link:=q;q↑.link:=p↑.link;


正确答案:C
由单链表的存储结构可知,每个结点的指针域保存其后继结点的指针。将指针为q的新结点插入到指针为P的结点之后,则原指针为P的结点的后继结点成为新结点的后继结点,由单链表的存储结构可知应执行q↑.link:=p↑.link,新结点成为指针P的后继结点,因此应执行p↑.link:=q,综上所述,选项C)是正确的。 

第6题:

双链表的每个结点包括两个指针域。其中rlink指向结点的后继,llink指向结点的前驱,如果要在p所指结点后插入q所指的新结点,操作序列正确的是( )。

A.p↑.rlinkt↑llink:=q;p↑.rlink:=q;q↑.llink:=p;q↑.rlink:=p↑.rlink;

B.p↑.llinkl↑.rlink:=q;p↑. llink:=q;q↑.rlink:=p;q↑.llink:=p↑.llink;

C.q↑.llink:=p;q↑.rlink:=p↑.rlink;p↑.rlinkl.llink:=q;p↑.rlink:=q↑;

D.q↑.rlink:=p;q↑.llink:=p↑.llink;p↑.llink↑.rlink:=q;p↑,llink:=q;


正确答案:C
解析:如果在链表的每个结点中包括两个指针域,其中rlink指向结点的后继,llink指向结点的前驱,就可以方便地进行向后和向前两个方向的查找。这样的链表称作双链表。在双链表中,如果要在P所指结点后插入q所指的新结点,只需修改P所指结点的rlink字段和原后继的llink字段,并置q所指结点的llink和rlink值.即:q↑.llink:=p;q↑.rlink:=p↑riink;p↑.riink↑.rlink:=q;p↑.rlink:=q

第7题:

假设双链表结点的类型如下: 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。

第8题:

(11)双链表的每个结点包括两个指针域。其中 rlink 指向结点的后继,llink 指向结点的前驱。如果要在 p 所指结点后插入q 所指的新结点,下列哪一个操作序列是正确的?

A)p↑.rlink↑.llink := q; p↑.rlink := q; q↑.llink := p; q↑.rlink := p↑.rlink;

B)p↑.llink↑.rlink := q; p↑.llink := q; q↑.rlink := p; q↑.llink := p↑.llink;

C)q↑.llink := p; q↑.rlink := p↑.rlink; p↑.rlink↑.llink := q; p↑.rlink := q;

D)q↑.rlink := p; q↑.llink := p↑.llink; p↑.llink↑.rlink := q; p↑.llink := q;


正确答案:C

(11)【答案】C)
【解析】在P结点后插入q指针所指结点,插入的顺序1---2---3---4,如图所示;

第9题:

双链表的每个结点包括两个指针域。其中rlink指向结点的后继,llink指向结点的前驱。如果要在P所指结点后插入q所指的新结点,下列( )操作序列是正确的。

A) q↑.rlink:=p; q↑.llink:=p↑.llink; p↑.rlink↑.rlink:=q; p↑.11ink:=q;

B) q↑llink:=p; q↑.rlink:=p↑.rlink; p↑rlink↑.llink:=q; p↑rlink:=q;

C) p↑.llink↑.rlink:=q; p↑.llink:=q; q↑rlink:=p; q↑.llink:=p↑.llink;

D) p↑.rlink↑.llink:=q; p↑.rlink:=q; q↑llink:=p; q↑rlink:=p↑.rlink;


正确答案:B
在双链表中,如果要在P所指结点后插入q所指的新结点,只需修改P所指结点的rlink字段和原后继的llink字段,并置q所指结点的llink和rlink值。即q↑.llink:=p;q↑.rlink:=p ↑.rlink;p ↑.rlink ↑.llink:=q;p ↑.rlink:=q。

第10题:

要在一个单向链表中删除p所指向的结点,已知q指向p所指结点的直接前驱结点,若链表中结点的指针域为next,则可执行q->next= p->next。()

此题为判断题(对,错)。


标准答案:对

更多相关问题