第一章 单元测试
1、单选题:
研究数据结构就是研究( )。
选项:
A:
数据的逻辑结构、存储结构及其数据在运算上的实现
B:
数据的逻辑结构和存储结构
C:
数据的存储结构
D:
数据的逻辑结构
答案: 【
数据的逻辑结构、存储结构及其数据在运算上的实现
】
2、单选题:
关于算法的说法,错误的是( )。
选项:
A:
其他三项都是错误的
B:
算法最终必须由计算机程序实现
C:
为解决某问题的算法和为该问题编写的程序含义是相同的
D:
算法的可行性是指指令不能有二义性
答案: 【
其他三项都是错误的
】
3、单选题:
数据的( )包括集合、线性、树和图4种基本类型。
选项:
A:
算法描述
B:
基本运算
C:
存储结构
D:
逻辑结构
答案: 【
逻辑结构
】
4、单选题:
数据的存储结构包括顺序、链式、散列和( )4种基本类型。
选项:
A:
向量
B:
索引
C:
集合
D:
数组
答案: 【
索引
】
5、单选题:
下面算法的时间复杂度为( )。for(i=0;i<m;i++) for(j=0;j<n;j++) A[i][j]=i*j;
选项:
A:
O(n2)
B:
O(m×n)
C:
O(m2)
D:
O(m+n)
答案: 【
O(m×n)
】
6、多选题:
以下( )属于设计一个“好”的算法应考虑达到的目标。
选项:
A:
正确性
B:
健壮性
C:
可读性
D:
效率与低存储量要求
答案: 【
正确性
;
健壮性
;
可读性
;
效率与低存储量要求
】
7、多选题:
依据所有数据成员之间的逻辑关系的不同,数据结构分为( )。
选项:
A:
非线性结构
B:
逻辑结构
C:
线性结构
D:
物理结构
答案: 【
非线性结构
;
线性结构
】
8、判断题:
在存储数据时,不仅要考虑存储各数据元素的值,而且还要存储数据元素之间的关系。
选项:
A:对
B:错
答案: 【对】
9、判断题:
在逻辑结构定义的操作与具体实现有关。
选项:
A:对
B:错
答案: 【错】
10、判断题:
算法是对解题方法和步骤的描述。
选项:
A:错
B:对
答案: 【对】
11、判断题:
算法分析的两个主要方面是时间复杂度和空间复杂度的分析。
选项:
A:对
B:错
答案: 【对】
第二章 单元测试
1、单选题:
线性表是( )。
选项:
A:
一个无限序列,可以为空。
B:
一个有限序列,可以为空。
C:
一个无限序列,不能为空。
D:
一个有限序列,不能为空。
答案: 【
一个有限序列,可以为空。
】
2、单选题:
若某线性表中最常用的操作是取第i个元素和查找第i个元素的前驱,则采用( )存储方法最节省时间。
选项:
A:
循环链表
B:
顺序表
C:
双向链表
D:
单链表
答案: 【
顺序表
】
3、单选题:
单链表中,增加一个头结点的目的是为了( )。
选项:
A:
标识表结点中首结点的位置
B:
方便运算的实现
C:
说明单链表是线性表的链式存储
D:
使单链表至少有一个结点
答案: 【
方便运算的实现
】
4、单选题:
在带有头结点的单链表Head中,要向表头插入一个由指针p指向的结点,则执行( )。
选项:
A:
p->next=Head; Head=p;
B:
p->next=Head; p=Head;
C:
Head=p;p->next=Head;
D:
p->next=Head->next; Head->next=p;
答案: 【
p->next=Head->next; Head->next=p;
】
5、单选题:
在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。
选项:
A:
删除第i个元素(1≤i≤n)
B:
将n个元素从小到大排序
C:
访问第i个元素(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)
D:
在第i个元素后插入一个新结点(1≤i≤n)
答案: 【
访问第i个元素(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)
】
6、多选题:
下列说法正确的有( )。
选项:
A:
数据的逻辑结构与数据元素本身的内容和形式无关
B:
所谓数据的逻辑结构是指数据元素之间的逻辑关系
C:
从逻辑关系上讲,数据结构分为两大类:线性结构和非线性结构
D:
“同一数据逻辑结构中的所有数据元素都具有相同的特性”是指数据元素所包含的数据项的个数相等
E:
算法和程序原则上没有区别,在讨论数据结构时二者通用
答案: 【
数据的逻辑结构与数据元素本身的内容和形式无关
;
所谓数据的逻辑结构是指数据元素之间的逻辑关系
;
从逻辑关系上讲,数据结构分为两大类:线性结构和非线性结构
】
7、判断题:
线性表的逻辑顺序和存储顺序总是一致的。
选项:
A:对
B:错
答案: 【错】
8、判断题:
在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。
选项:
A:错
B:对
答案: 【对】
9、判断题:
顺序存储结构只能存储线性结构,链式存储结构只能存储非线性结构。
选项:
A:错
B:对
答案: 【错】
10、判断题:
线性表的链式存储结构优于顺序存储结构。
选项:
A:错
B:对
答案: 【错】
11、判断题:
链式存储方式以指针表示元素间的逻辑关系。
选项:
A:错
B:对
答案: 【对】
第三章 单元测试
1、判断题:
在顺序栈空的情况下不能进行出栈操作,否则将产生“下溢”。
选项:
A:对
B:错
答案:
2、判断题:
栈和队列都是限制存取位置的线性表。
选项:
A:对
B:错
答案:
3、判断题:
若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,则不可能得到出栈序列:a,f,e,d,c,b。
选项:
A:对
B:错
答案:
4、判断题:
入栈操作和入队列操作在链式存储结构上实现时一般不需要考虑栈溢出的情况。
选项:
A:对
B:错
答案:
5、判断题:
同一个栈内的各个数据元素类型可以不一致。
选项:
A:对
B:错
答案:
6、多选题:
以下说法中正确的是( )
选项:
A:
队列被称为“先进后出”表。
B:
栈是一种操作不受限制的线性表。
C:
当队列中无数据元素时,称空队列。
D:
栈是一种只允许在一端进行插入和删除的线性表。
答案:
7、多选题:
以下说法中错误的是( ) 。
选项:
A:
栈不能对输入序列部分或全局求逆。
B:
top=-1时为空栈,元素进栈时指针top不断减1。
C:
当top等于数组最大下标时则栈满。
D:
利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,这种形式的栈称为顺序栈。
答案:
8、多选题:
已知一个栈的进栈序列是a1,a2,a3….an.其输出序列为1,2,3…n,若a3=1则a1为( )
选项:
A:
一定是2
B:
不可能是3
C:
不可能是2
D:
可能是2
E:
可能是3
答案:
9、单选题:
栈的特点是( )
选项:
A:
进优于出
B:
先进后出
C:
出优于进
D:
先进先出
答案:
10、单选题:
设循环队列的容量为20,序号从0到19,经过一系列的入队和出队后,front=5,rear=10,问队列中有多少个元素(采用节省一个队列存储空间的方式)。
选项:
A:
4
B:
5
C:
6
D:
7
答案:
11、单选题:
一个队列的入队序列是1,2,3,4,则队列的出队序列是( )
选项:
A:
1,4,3,2
B:
3,2,4,1
C:
4,3,2,1
D:
1,2,3,4
答案:
12、单选题:
一般情况下,将递归算法转换成等价的非递归算法应该设置( )
选项:
A:
栈
B:
栈或队列
C:
队列
D:
数组
答案:
13、单选题:
设用链表作为栈的存储结构则退栈操作( )
选项:
A:
对栈不作任何判别
B:
必须判别栈是否为满
C:
必须判别栈是否为空
D:
判别栈元素的类型
答案:
第四章 单元测试
1、判断题:
KMP算法的特点是在模式匹配时指示主串的指针不会变小。
选项:
A:对
B:错
答案:
2、判断题:
空串与空格串是相同的。
选项:
A:错
B:对
答案:
3、判断题:
串的长度是指串中不同字符的个数。
选项:
A:对
B:错
答案:
4、判断题:
设有两个串P和Q,其中Q是P的子串,把Q在P中首次出现的位置作为子串Q在P中的位置的算法称为模式匹配算法。
选项:
A:错
B:对
答案:
5、判断题:
设模式串(子串)的长度为m,目标串(主串)的长度为n。当n≈m且处理只匹配一次的模式时,简单模式匹配(BF)算法所花费的时间代价也可能会比KMP算法更节省。
选项:
A:错
B:对
答案:
6、多选题:
串是一种特殊的线性表,下列不能体现其特殊性的是( )
选项:
A:
可以链接存储
B:
数据元素是字符型数据
C:
数据元素可以是非字符数据
D:
可以顺序存储
答案:
7、多选题:
以下说法中错误的是( )
选项:
A:
串中的元素只能是字母
B:
串是一种特殊的线性表
C:
空串就是空白串
D:
串的长度必须大于零
答案:
8、多选题:
两个串相等必须有( )
选项:
A:
串长度任意
B:
串长度相等
C:
串中各位置字符均对应相等
D:
串中的各位置字符任意
E:
串长度不相等
答案:
9、单选题:
若串S=”software”,其子串的数目是( )
选项:
A:
9
B:
8
C:
36
D:
37
答案:
10、单选题:
下面( )不是 “abcd321ABCD”的子串( )
选项:
A:
abcd
B:
321AB
C:
abcAB
D:
21AB
答案:
11、单选题:
已知模式串为“aaab”,其next数组值为( )
选项:
A:
0,1,2,0
B:
-1,0,1,2
C:
-1,1,0,0
D:
0,0,1,2
答案:
12、单选题:
设主串为“abccdcdccdbaa”,模式串为“cdcc”,用BF算法在第( )次匹配成功。
选项:
A:
4
B:
6
C:
5
D:
7
答案:
13、单选题:
设串s1=“ABCDEFG”,s2=“12345”,用字符数组从0下标位置存储,函数strcat(s, t)返回s和t串的连接串,strsub(s, i, j)返回串s中从第i个字符开始的连续j个字符组成的子串,strlen(s)返回串s的长度,则strcat(strsub(s1, 2, strlen(s2)), strsub(s1, strlen(s2),2))的结果是( )
选项:
A:
BCDEFG1
B:
CDEFGFG
C:
CD12345
D:
CDEFG12
答案:
第五章 单元测试
1、判断题:
稀疏矩阵压缩存储后,必会失去随机存取功能。
选项:
A:对
B:错
答案:
2、判断题:
数组可看成线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作。
选项:
A:错
B:对
答案:
3、判断题:
数组的存储结构是一组连续的内存单元。
选项:
A:对
B:错
答案:
4、判断题:
广义表中原子个数即为广义表的长度。
选项:
A:错
B:对
答案:
5、判断题:
广义表中元素的个数即为广义表的深度。
选项:
A:对
B:错
答案:
6、多选题:
广义表((a), (a))的表头和表尾是( )
选项:
A:
b
B:
(a)
C:
a
D:
((a))
答案:
7、多选题:
以下属于特殊矩阵的是( )
选项:
A:
下三角矩阵
B:
上三角矩阵
C:
对角矩阵
D:
对称矩阵
答案:
8、多选题:
以下不属于数组操作的是( )
选项:
A:
插入
B:
删除
C:
存取
D:
查找
E:
修改
答案:
9、单选题:
对行下标由1到50、列下标由1到80的二维数组a,若该数组的起始地址为2000且每个元素占2个存储单元,并以行为主序顺序存储,则元素a[45][68]的存储地址为( )
选项:
A:
9175
B:
9173
C:
9172
D:
9174
答案:
10、单选题:
在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的( )
选项:
A:
行号
B:
元素值
C:
列号
D:
非零元素个数
答案:
11、单选题:
设有一个10阶的下三角矩阵A(包括对角线),按照从上到下、从左到右的顺序存储到连续的55个存储单元中,每个数组元素占1个字节的存储空间,则A[5][4]地址与A[0][0]的地址之差为( )
选项:
A:
19
B:
10
C:
28
D:
55
答案:
12、单选题:
设二维数组A[0~m][0~n]按行优先顺序存储在内存中,第一个元素的地址为p,每个元素占k个字节,则a[i][j]的地址为( )
选项:
A:
p + (j*n+i-1)*k
B:
p + ((j-1)*n+i-1)*k
C:
p + (i*n+j)*k
D:
p + ((i-1)*n+j-1)*k
答案:
13、单选题:
下面说法不正确的是( )
选项:
A:
广义表的表头总是一个广义表
B:
广义表的表尾总是一个广义表
C:
广义表难以用顺序结构存储
D:
广义表可以是一个多层次结构
答案:
第六章 单元测试
1、单选题:
一棵完全二叉树上有1001个结点,其叶子结点的个数是()。
选项:
A:
250
B:
500
C:
A~C都不对
D:
505
答案:
2、单选题:
一棵有124个叶结点的完全二叉树最多有( )个结点。
选项:
A:
249
B:
247
C:
248
D:
250
答案:
3、单选题:
在n个结点的线索二叉树中,线索的数目为( )
选项:
A:
n+1
B:
2n
C:
n
D:
n-1
答案:
4、单选题:
设有13个值,用它们组成一棵哈夫曼树,则该哈夫曼树共有( )个结点。
选项:
A:
26
B:
13
C:
25
D:
12
答案:
5、单选题:
树的基本遍历策略可分为先根遍历和后根遍历,而二叉树的基本遍历策略可分为先序、中序和后序这三种遍历。我们把由树转化得到的二叉树称为该树对应的二叉树,则( )是正确的。
选项:
A:
树的先根遍历与其对应的二叉树先序遍历序列相同
B:
树的先根遍历与其对应的二叉树中序遍历序列相同
C:
树的后根遍历与其对应的二叉树后序遍历序列相同
答案:
6、多选题:
完全二叉树()。
选项:
A:
适合于顺序存储结构存储
B:
叶子结点可在任一层出现
C:
某些结点有左子树时则必有右子树
D:
不一定适合顺序存储结构存储
E:
某些结点有右子树时则必有左子树
答案:
7、多选题:
对于二叉树,下列描述正确的是()
选项:
A:
一定有度数为1的结点
B:
n个结点共有n-1个非空指针域
C:
叶子结点数目比度数为2的结点数目多1个
D:
第k层上最多有2k-1个结点
E:
高度为k的二叉树结点数最多时一定是满二叉树
F:
边的个数比结点个数少1个
答案:
8、多选题:
关于哈夫曼编码的说法正确的是( )
选项:
A:
是一种最佳编码
B:
不允许出现频度相同的字符
C:
两个频度相同的字符其编码长度一定相等
D:
编码无二义性
E:
WPL最小
答案:
9、判断题:
存在这样的二叉树,对它采用任何次序进行遍历得到的结果都相同。
选项:
A:错
B:对
答案:
10、判断题:
二叉树就是结点度为2的有序树。
选项:
A:对
B:错
答案:
11、判断题:
若一个结点是二叉树子树的中序遍历序列中的最后一个结点,则它必是该子树的先序遍历序列中的最后一个结点。
选项:
A:错
B:对
答案:
12、判断题:
一棵含有n个结点的完全二叉树,它的高度是⌊log2n⌋+1。
选项:
A:错
B:对
答案:
13、判断题:
线索二叉树的左线索指向其某种遍历序列的直接前驱结点,右线索指向其某种遍历序列的直接后继结点。
选项:
A:错
B:对
答案:
第七章 单元测试
1、单选题:
无向图的邻接矩阵是( )矩阵。
选项:
A:
稀疏矩阵
B:
上三角阵
C:
对称
D:
下三角阵
答案:
2、单选题:
用邻接表存储的图所用空间大小( )
选项:
A:
与边数的平方有关
B:
只与图的顶点数有关与边数的平方有关
C:
只与图的边数有关
D:
与图的顶点数和边数都有关
答案:
3、单选题:
不论基于图的邻接表还是基于邻接矩阵存储,图的广度优先遍历算法类似于树的( )
选项:
A:
中序遍历
B:
先序遍历
C:
层次遍历
D:
后序遍历
答案:
4、单选题:
一个连通图的生成树是包含该图的所有顶点的( )
选项:
A:
极大连通子图
B:
极小连通子图
C:
极小子图
D:
极大子图
答案:
5、单选题:
具有n个顶点的连通有向图中,至少需要( )条边。
选项:
A:
n-1
B:
n+1
C:
n
D:
2n
答案:
6、多选题:
下列哪些算法是属于图的应用算法( )
选项:
A:
欧几里德算法
B:
哈夫曼(Huffman)算法
C:
拓扑排序算法
D:
迪杰斯特拉(Dijkstra)算法
E:
克鲁斯卡尔(Kruskal)算法
答案:
7、多选题:
下列( )算法可用于构造图的生成树。
选项:
A:
BFS
B:
DFS
C:
kruskal
D:
Prim
E:
Floyd
答案:
8、多选题:
下列( )是构造最短路径的方法。
选项:
A:
Prim
B:
Dijkstra
C:
BFS
D:
Floyd
E:
Kruskal
答案:
9、判断题:
n个结点的无向图,若没有顶点到自身的边,也没有一个顶点到另一个顶点的多重边,此时若有n(n-1)/2条边 ,则该无向图一定是连通图。
选项:
A:对
B:错
答案:
10、判断题:
用邻接矩阵存储一个图时,在不考虑压缩存储的情况下,所占用空间大小与图的顶点数有关,与图的边数无关。
选项:
A:对
B:错
答案:
11、判断题:
对于任意一个图,从它的某个顶点出发进行一次深度或者广度遍历可以访问到该图的每个顶点。
选项:
A:对
B:错
答案:
12、判断题:
对于无向图的生成树,从同一顶点出发所得的生成树相同。
选项:
A:错
B:对
答案:
13、判断题:
有向图顶点v的度是其邻接矩阵中第v行1的个数。
选项:
A:对
B:错
答案:
第八章 单元测试
1、单选题:
衡量一个查找算法执行效率高低的最重要的指标是( )。
选项:
A:
查找过程中关键字比较的最大次数
B:
查找表中的元素个数
C:
所需的内存大小
D:
平均查找长度
答案:
2、单选题:
对线性表进行二分查找时,要求线性表必须 ( )。
选项:
A:
采用顺序存储结构且元素按查找关键字有序排列
B:
采用链接存储结构
C:
采用链接存储结构且结点按查找关键字有序排列
D:
采用顺序存储结构
答案:
3、单选题:
哈希查找中的冲突是指( )。.
选项:
A:
两个元素的关键字值不同
B:
两个元素具有相同序号
C:
不同关键字值对应相同的存储地址
D:
两个元素的关键字值相同
答案:
4、单选题:
对于一棵二叉排序树进行( )遍历可得到按关键字有序排列的数据序列。
选项:
A:
先序
B:
后序
C:
中序
D:
层序
答案:
5、单选题:
顺序查找适合于采用( )存储结构的线性表。
选项:
A:
索引
B:
压缩
C:
顺序或链式
D:
散列
答案:
6、多选题:
下面关于哈希查找的说法中,正确的是( )
选项:
A:
采用链地址法处理冲突时,若规定采用头插法进行插入,则插入任何一个元素的时间是相同的
B:
链地址法处理冲突的平均查找长度小于线性探测和二次探测
C:
用链地址处理冲突,不会引起二次聚集的现象
D:
采用链地址法处理冲突时,查找任何一个元素的时间都相同
E:
用链地址处理冲突,适合表长不确定的情况
答案:
7、多选题:
以下关于二叉排序树的说法中,正确的是( )
选项:
A:
二叉排序树中左子树上所有结点的关键字值均小于它的根结点
B:
二叉排序树一定为一棵平衡二叉树
C:
二叉排序树中右子树上所有结点的关键字值均大于它的根结点
D:
对某棵二叉排序树进行中序遍历,一定能得到按关键字升序排列的有序序列
E:
在二叉排序树上的查找过程与折半查找过程类似
答案:
8、判断题:
在一个结点值按照查找关键字有序排列的单链表上可以采用折半查找方法来提高查找速度。
选项:
A:对
B:错
答案:
9、判断题:
折半查找过程所对应的判定树一定是一棵平衡二叉树。
选项:
A:错
B:对
答案:
10、判断题:
在任意一个数据表上,采用折半查找一定比采用顺序查找的查找速度快。
选项:
A:错
B:对
答案:
11、判断题:
在结点数确定的二叉排序树上进行查找的平均查找长度与二叉树的形态有关,最好的情况是二叉排序树为平衡二叉树的时候。
选项:
A:错
B:对
答案:
12、判断题:
折半查找的效率与二叉排序树的查找效率是一样的。
选项:
A:错
B:对
答案:
第九章 单元测试
1、单选题:
对同一组数据分别采用直接插入排序和折半插入排序进行排序,二者可能存在的不同之处在于( )。
选项:
A:
占用的辅助内存空间大小
B:
整个排序过程中的元素移动次数
C:
整个排序过程中的关键字比较次数
D:
排序的总趟数
答案:
2、单选题:
希尔排序属于( )类排序方法。
选项:
A:
交换
B:
插入
C:
选择
D:
归并
答案:
3、单选题:
堆排序中所采用的堆的形态为一棵( )。
选项:
A:
平衡二叉树
B:
二叉排序树
C:
满二叉树
D:
完全二叉树
答案:
4、单选题:
以下关于排序算法的说法中正确的是( )。
选项:
A:
稳定的排序算法执行效率优于不稳定的排序算法
B:
在顺序表上可以应用的排序算法都可以应用在链表上
C:
对同一组数据采用不同的排序算法,排序的结果有可能不同
D:
排序算法都是应用在顺序表上的,在链表上无法应用
答案:
5、单选题:
n个元素构成的降序顺序表,采用冒泡排序按照关键字升序排列时共需进行( )趟排序。
选项:
A:
n-1
B:
趟数不确定
C:
1
D:
log2n
答案:
6、多选题:
四种排序方法中,排序的趟数与数据表的初始排列顺序无关的是( )。
选项:
A:
简单选择排序
B:
直接插入排序
C:
快速排序
D:
堆排序
E:
冒泡排序
答案:
7、多选题:
以下排序方法中,具有稳定性的是( )。
选项:
A:
直接插入排序
B:
堆排序
C:
快速排序
D:
冒泡排序
E:
希尔排序
F:
简单选择排序
G:
折半插入排序
答案:
8、多选题:
以下排序方法中,空间复杂度为O(1)的是( )。
选项:
A:
希尔排序
B:
冒泡排序
C:
堆排序
D:
快速排序
E:
直接插入排序
答案:
9、判断题:
若采用某种排序方法对某一组数据进行排序后,关键字值相同的元素的相对次序与排序前保持一致,则说明该排序算法具有稳定性。
选项:
A:错
B:对
答案:
10、判断题:
在外排序中需要使用外存储器来保存待排序的数据。
选项:
A:错
B:对
答案:
11、判断题:
空间复杂度是衡量排序算法在执行过程中存储全部待排序数据所使用的总空间大小的一个指标。
选项:
A:对
B:错
答案:
12、判断题:
对于任意一组数据,采用折半插入排序时的关键字比较次数一定小于直接插入排序。
选项:
A:错
B:对
答案:
13、判断题:
快速排序当数据表每次划分得到的子表长度均衡时,算法的效率最高,时间复杂度为O(n)。
选项:
A:错
B:对
答案:
请先
!