在带有头结点的双链表1中,指针P所指结点是第一个元素结点的条件是()。

题目
填空题
在带有头结点的双链表1中,指针P所指结点是第一个元素结点的条件是()。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

●在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是 (50) 。

(50) A.p=NULL

B.p→next=NULL

C.p=h

D.p→next=h


正确答案:D
【解析】此题是考查数据结构的链表知识。根据单向环链表的定义和题中的答案,不难可以得到答案,因为 p=NULL,链表的节点是不能为空的。肯定错了; p->next=NULL,在最后一个指针为空的情况下,不能连成环,这是单向链表定义,所以错了; p=h,将头指针赋值给尾指针,显然也不对,p就不是尾指针了。

第2题:

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


参考答案:头结点的指针、指向第一个结点的指针

第3题:

在一个单链表中p所指结点(p所指不是最后结点)之后插入一个由指针s所指结点,应执行s->next=_______;和p->next=________的操作。


参考答案:p->next;s

第4题:

在双向循环链表中,在p所指的结点之后插入指针f所指的新结点,其操作步骤是()。


答案:D
解析:
在双向循环链表中。在p所指的结点之后插入指针f所指的新结点的操作步骤为:改变f的前驱指针域,使其指向p;然后改变f的后继指针域,使其指向p的后继;接下来修改p的后继结点得前驱指针域,指向f,最后将f的地址付给p的后继指针。具体操作为:f—>pnor=p;f—>next=p—>next;p—>next—>prior=f;P—>next=f。

第5题:

在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是(50)。

A.p=NULL

B.P→next=NULL

C.p=h

D.p→next=h


正确答案:D
解析:此题是考查数据结构的链表知识。根据单向循环链表的定义和题中的答案,不难得出正确答案。因为.P=NULL,链表的节点是不能为空的,肯定错了;p->next=NULL,在最后一个指针为空的情况下,不能连成环,这是单向链表定义,所以错了;p=h,将头指针赋值给尾指针,显然也不正确,P就不是尾指针了。

第6题:

● 单向链表中往往含有一个头结点,该结点不存储数据元素,一般令链表的头指针指向该结点,而该结点指针域的值为第一个元素结点的指针。以下关于单链表头结点的叙述中,错误的是 (60) 。

(60)A. 若在头结点中存入链表长度值,则求链表长度运算的时间复杂度为O(1)

B. 在链表的任何一个元素前后进行插入和删除操作可用一致的方式进行处理

C. 加入头结点后,代表链表的头指针不因为链表为空而改变

D. 加入头结点后,在链表中进行查找运算的时间复杂度为O(1)


正确答案:D
试题(60)分析
  本题考查数据结构基础知识。
  含有头结点的单链表如下图所示

  在链表中加入头结点后,查找表中某一元素仍然要从头指针出发,顺序找到目标元素或失败时找到表尾为止,时间复杂度与表长成正比。

第7题:

程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q、均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

该程序段实现的功能是( )。

A.首结点成为尾结点

B.尾结点成为首结点

C.删除首结点

D.删除尾结点


正确答案:A
循环找到末尾结点,然后赋值给第一个结点,所以选择A)。

第8题:

在无头结点的双链表中,指针P所指结点是第一个结点的条件是()。


参考答案:p->prior==NULL

第9题:

阅读以下说明和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= ______; } }


答案:
解析:
!headptr->next,或!headptr||!headptr->next,或其等价形式
headptr->next
headptr->next->next,或p->next,或其等价形式
s->next,或p->next, 或其等价形式
p

第10题:

在长度为n(Il>1)的()上,删除第一个元素.其时间复杂度为O(n)。

A.只有首结点指针的不带头结点的循环单链表
B.只有尾结点指针的不带头结点的循环单链表
C.只有尾结点指针的带头结点的循环单链表
D.只有头结点的循环单链表

答案:A
解析:
只有首结点指针的不带头结点的循环单链表删除第一个元素,需要遍历整个链表,因此A项的时间复杂度为O(n),BCD三项的时间复杂度都为O(1)。

更多相关问题