不带头结点的单链表head为空的条件
- 格式:docx
- 大小:13.54 KB
- 文档页数:4
一、单项选择题1.算法必须具备的三个特性是( )。
A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性D.易读性、稳定性、安全性2.下列数据中,( )是非线性数据结构。
A.栈B.队列C.完全二叉树D.顺序表3.算法分析的两个方面是( )。
A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性4.非空的循环单链表head的尾结点p满足( )。
A.p->next==head B.p->next==NULLC.p==NULL D.p==head5.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是( )。
A.p->next=s;s->next=p->next; B.s->next=p->next;p->next=s;C.p->next=s;p->next=s->next; D.p->next=s->next;p->next=s;6.按照二叉树的定义,具有3个结点的二叉树有( )种。
A.3 B.4C.5 D.67.在一个有向图中,所有顶点的入度之和是所有顶点的出度之和的( )倍。
A.1/2 B.1C.2 D.48.二叉排序树是( )。
A.每一分支结点的度均为2的二叉树B.中序遍历得到一升序序列的二叉树C.按从左到右顺序编号的二叉树D.每一分支结点的值均小于左子树上所有结点的值,大于右子树上所有结点的值9.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是( )。
A.1和 5 B.2和4C.4和2 D.5和110.下列说法中正确的是( )。
A.堆栈是在两端操作、先进后出的线性表B.堆栈是在一端操作、先进先出的线性表C.队列是在一端操作、先进先出的线性表D.队列是在两端操作、先进先出的线性表11.不带头结点的单链表head为空的判定条件是( )。
数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)数据结构基础及深入及考试习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系。
即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。
它依赖于计算机。
存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。
它由基本的数据类型构成,并包括一组相关的服务(或称操作)。
它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。
4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
5、在数据结构中,从逻辑上可以把数据结构分成(C)A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于(A)A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种。
2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为(E),删除一个元素需要移动的元素的个数为(A)。
A、(n-1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的。
”这个结论是(B)A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址(D)A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是(B)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是(A)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL7、非空的循环单链表head的尾结点P满足(C)A、p->ne某t==NULLB、p==NULLC、p->ne某t==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B)A、O(1)B、O(n)C、O(n2)D、O(nlog2n)数据结构(第4版)习题及实验参考答案9、在一个单链表中,若删除p所指结点的后继结点,则执行(A)A、p->ne某t=p->ne某t->ne某t;B、p=p->ne某t;p->ne某t=p->ne某t->ne某t;C、p->ne某t=p->ne某t;D、p=p->ne某t->ne某t;10、在一个单链表中,若在p所指结点之后插入所指结点,则执行(B)A、->ne某t=p;p->ne某t=;B、->ne某t=p->ne某t;p->ne某t=;C、->ne某t=p->ne某t;p=;D、p->ne某t=;->ne某t=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点,则执行(C)A、->ne某t=p->ne某t;p->ne某t=;B、p->ne某t=->ne某t;->ne某t=p;C、q->ne某t=;->ne某t=p;D、p->ne某t=;->ne某t=q;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有1个前趋结点。
程序复杂性3、具有线性结构的数据结构是(D)。
A.图B.树C.广义表D.栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B)等5个特性。
A.可执行性、可移植性和可扩充性B.可执行性、有穷性和确定性C.确定性、有穷性和稳定性D.易读性、稳定性和确定性5、下面程序段的时间复杂度是(C)。
for(i=0;i<m;i++)6A.C.789、B)和运A.10}11A.12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是(A)。
A.正确性算法应能正确地实现预定的功能B.易读性算法应易于阅读和理解,以便调试、修改和扩充C.健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果D.高效性即达到所需要的时间性能13、下列程序段的时间复杂度为(B)。
x=n;y=0;while(x>=(y+1)*(y+1))y=y+1;A.O(n)B.)O C. O(1) D.O(n2)(n二、填空题1、程序段“i=1;while(i<=n)i=i*2;”的时间复杂度为O(log2n)。
2、数据结构的四种基本类型中,树形结构的元素是一对多关系。
1答案:1、(C)。
2存储方A.3A.456A.C.7、在双向循环链表中,在p指针所指的结点后插入一个指针q所指向的新结点,修改指针的操作是(C)。
A.p->next=q;q->prior=p;p->next->prior=q;q->next=q;B.p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;C.q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;D.q->next=p->next;q->prior=p;p->next=q;p->next=q;8、线性表采用链式存储时,结点的存储地址(C)。
不带头结点的单链表head为空的判别条件是()A.head!=NULL B.head—>link= =NULL C.head—>link= =head D.head= =NULL
B
因为不带头结点,所以head的下一位是第一位
即判断head->link是否为空即可
不带头结点的单链表head为空的判定条件是什么head==NULL;头指针直接指向空
若有头结点,则为head->next==NULL
head==null;
带头结点的是head->null;
( )不带头结点的单链表head为空的判定条件是
head==NULL
head->next==NULL
head!=NULL
head->next==head
A head == NULL
带头结点的单链表head为空的判定条件()
正确答案: B 你的答案: C (错误)
head==NULL
head->next==NULL
head->next==head
head!=NULL
B
注意是带头结点,如果不带头结点就选A
为何头指针为head的带头结点的单链表判空条件head->next==null?其实一开始这里也是没啥问题的,只是突然产生了疑问点——head为头指针,储存了头结点的地址,按照我残余的一点指针知识,我总感觉不对,head只是个地址,咋可以直接head->next使用呢?其实哈,这里又产生了和我之前学结构体这个知识点一样的纠结点(嘿嘿,其实这里也算是结构体类型)——结构体
总之和结构体类型一样这个指向符号“->”,这里是有特殊规定的,
比如你定义个结构体类型
struct student
{
int age;
float score;
char name[100];
}*pstu,stu;
你用stu.age,pstu->age或者(*pstu).age都是一样可以取到成员变量的,这里的pstu它也是个地址,但是c语言就是这么规定了利用pstu->age可以取到其结构体内部成员变量(记住就好)所以不
难理解为啥head这个指向头结点的指针为啥用head->next就能取到头结点结构体中的next成员变量了。
如此便恍然大悟,头结点中next成员变量存储的是下一个结点的地址,若next域中为null,所以除了头结点外,链表中无其他结点,于是单链表判空。