5、在带表头结点的单链表中,设指针first指向表头结点,当______时,表示链表为空。A.first==NULLB.first->link==NULLC.first->link==firstD.first!=NULL

5、在带表头结点的单链表中,设指针first指向表头结点,当______时,表示链表为空。

A.first==NULL

B.first->link==NULL

C.first->link==first

D.first!=NULL


参考答案和解析
算法思想:把头指针head所指单链表置空后,把原单链表(设由头指针p指示)中的数据元素逐个重新插入。每次插入从head所指单链表的当前首元结点开始,逐个比较head所指单链表每个结点的data域值和p所指单链表的当前首元结点的data域值,当前者小于或等于后者时,用head所指单链表的下一个结点进行比较;否则就找到了插入结点的合适位置,从p所指单链表中取当前首元结点插入到head所指单链表的合适位置。这样的过程一直进行到p所指单链表为空时结束。 算法设计如下:

相关考题:

若线性表的插入和删除操作频繁地在表头或表尾位置进行,则更适宜采用的存储结构为()。 A、无头结点的双向链表B、带尾指针的循环链表C、无头结点的单链表D、带头指针的循环链表

● 单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是 (60) 。(60)A. 若在头结点中存入链表长度值,则求链表长度运算的时间复杂度为O(1)B. 在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理C. 加入头结点后,代表链表的头指针不因为链表为空而改变D. 加入头结点后,在链表中进行查找运算的时间复杂度为O(1)

下列叙述中错误的是()A.循环链表中有一个表头结点B.循环链表的存储空间是连续的C.循环链表实现了空表与非空表运算的统一D.循环链表的表头指针与循环链表中最后一个结点的指针均指向表头结点

单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是( )。A.若在头结点中存入链表长度值,则求链表长度运算的时间复杂度为O(1)B.在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理C.加入头结点后,代表链表的头指针不因为链表为空而改变D.加入头结点后,在链表中进行查找运算的时问复杂度为O(1)

head指向的带表头结点的单链表为空的判定条件是()。A、head==NULLB、head->next==headC、head!=NULLD、head->next==NULL

单向循环链表是单向链表的一种扩充,当单向链表带有头结点时,把单向链表中尾结点的指针域由空指针改为回答;当单向链表不带头结点时,则把单向链表中尾结点的指针域由空指针改为指向()。

在长度为n的()上删除第一个元素,其算法的时间复杂度为O(n)。 A.只有表头指针的不带表头结点的循环单链表B.只有表尾指针的不带表头结点的循环单链表C.只有表尾指针的带表头结点的循环单链表D.只有表头指针的带表头结点的循环单链表

函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空includestruc 函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空include <stdio.h>struct node{ int data;struct node *next;};int min(struct node *first)/*指针first为链表头指针*/{ struct node *p; int m;p=first->next; re=p->data; p=p->next;for( ;p!=NULL;p=【 】)if(p->data<m ) re=p->data;return m;}

设单链表中结点的结构为非空的循环单链表first的尾结点(由p所指向)满足:______A.p->link==NULL;B.p==NULL;C.p->link==first;D.p==first;

阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]函数ReverseList(LinkList headptr)的功能是将含有头结点的单链表就地逆置。处理思路是将链表中的指针逆转,即将原链表看成由两部分组成:已经完成逆置的部分和未完成逆置的部分,令s指向未逆置部分的第一个结点,并将该结点插入已完成部分的表头(头结点之后),直到全部结点的指针域都修改完成为止。例如,某单链表如图1所示,逆置过程中指针s的变化情况如图2所示。链表结点类型定义如下:typedef struct Node{ int data; Struct Node *next; }Node,*LinkList; [C函数] void ReverseList(LinkList headptr) { //含头结点的单链表就地逆置,headptr为头指针 LinkList p,s; if(______) return; //空链表(仅有头结点)时无需处理 P=______; //令P指向第一个元素结点 if(!P->next) return; //链表中仅有一个元素结点时无需处理 s=p->next; //s指向第二个元素结点 ______ =NULL; //设置第一个元素结点的指针域为空 while(s){ p=s; //令p指向未处理链表的第一个结点 s= ______; p->next=headptr->next; //将p所指结点插入已完成部分的表头 headptr->next= ______; } }

设head为非空的单向循环链表头指针,p指向链表的尾结点,则满足逻辑表达式()的值为真。Ap-next=NULLBp-next==headCp-next=headDp==NULL

在循环双向链表中表头结点的左指针域指向()结点,最后一个结点的右指针域指向()结点。

在以HL为表头指针的带表头附加结点的单链表和循环单链表中,链表为空的条件分别为()和()。

对一个循环单链表中,表尾结点的指针域与表头指针值()

带表头结点的空循环双向链表的长度等于()。

设一个链表最常用的操作是在表尾插入结点和在表头删除结点,则选用下列哪种存储结构效率最高?()A、 单链表B、 双链表C、 单循环链表D、 带尾指针的单循环链表

设单链表的结点结构为(data,next)。已知指针p指向单链表中的结点,q指向新结点,欲将q插入到p结点之后,则需要执行的语句:();()。

设rear是指向非空、带头结点的循环单链表的尾指针,则该链表首结点的存储位置是()

设单循环链表中结点的结构为(data,link),且first为指向链表表头的指针,current为链表当前指针,在循环链表中检测current是否达到链表表尾的语句是()。A、current-link=nullB、first-link=currentC、first=currentD、current-link=first

填空题带表头结点的空循环双向链表的长度等于()。

填空题在以HL为表头指针的带表头附加结点的单链表和循环单链表中,链表为空的条件分别为()和()。

单选题设单循环链表中结点的结构为(data,link),且first为指向链表表头的指针,current为链表当前指针,在循环链表中检测current是否达到链表表尾的语句是()。Acurrent-link=nullBfirst-link=currentCfirst=currentDcurrent-link=first

单选题设head为非空的单向循环链表头指针,p指向链表的尾结点,则满足逻辑表达式()的值为真。Ap-next=NULLBp-next==headCp-next=headDp==NULL

单选题设一个链表最常用的操作是在表尾插入结点和在表头删除结点,则选用下列哪种存储结构效率最高?()A 单链表B 双链表C 单循环链表D 带尾指针的单循环链表

填空题在循环双向链表中表头结点的左指针域指向()结点,最后一个结点的右指针域指向()结点。

填空题对一个循环单链表中,表尾结点的指针域与表头指针值()

填空题设rear是指向非空、带头结点的循环单链表的尾指针,则该链表首结点的存储位置是()

填空题设单链表的结点结构为(data,next)。已知指针p指向单链表中的结点,q指向新结点,欲将q插入到p结点之后,则需要执行的语句:();()。