大工数据结构课程考试模拟试卷a
少年易学老难成,一寸光阴不可轻- 百度文库
《数据结构》
一、单项选择题(本大题共10小题,每小题3分,共30分)
1、若进栈的序列为1,2,3,4,则不可能得到的出栈序列是()。
A. 3,2,1,4
B. 3,2,4,1
C. 4,2,3,1
D. 2,3,4,1
2、深度为k的完全二叉树所含叶结点的个数最多为(),设根结点在第1层上。
A. 2k
B. 2k-1
C. k
D. 2k-1
3、衡量查找算法效率的主要标准是()。
A. 元素个数
B. 所需的存储量
C. 平均查找长度
D. 算法难易程度
4、与线性表的顺序存储不相符的特性是()。
A. 插入和删除操作灵活
B. 需要连续的存储空间
C. 便于随机访问
D. 存储密度大
5、若进队序列为1,2,3,则出队序列是()。
A. 3,2,1
B. 1,2,3
C. 1,3,2
D. 3,1,2
6、不带头结点的单链表L为空的判定条件是()。
A. L==NULL
B. L->next==NULL
C. L->next==L
D. L!=NULL
7、union(A,B,C)表示求集合A和B的并集C。若A={a,b,c},B={c,d},则union(A,B,C)运算后C=()。
A.{a,b,c,d} B.{a,b,c}
C.{a,b} D.{c,d}
8、数组A中,每个元素的长度为3个存储单元,行下标i从1到5,列下标j从1到6,从首地址SA开始连续存放在存储器内,存放该数组至少需要的存储单元数是()。
A. 90
B. 70
C. 50
D. 30
9、遍历一棵具有n个结点的二叉树,在先序序列、中序序列和后序序列中所有叶子结点的相对次序()。
A. 都不相同
B. 完全相同
C. 先序和中序相同
D. 中序和后序相同
10、用给定的哈夫曼编码来压缩数据文件,其压缩效率主要取决于()。
A. 文件长度
B. 平均码长
C. 被压缩文件的特征
D. 以上都不是
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、当利用大小为N的数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。
A. top++
B. top--
C. top=0
D. top=N-1
7、在一个带头结点的双向循环链表中,若要在p所指向的结点之前插入一个新结点,则需要相继修改()个指针域的值。
A. 2
B. 3
C. 4
D. 5
8、利用3,6,8,12,5,7这六个值作为叶子结点的权,生成一棵哈夫曼树,该树的深度为()。
A. 3
B. 4
C. 5
D. 6
9、在一个具有n个顶点和e条边的有向图的邻接表中,保存顶点单链表的表头指针向量的大小至少为()。
A. n
B. 2n
C. e
D. 2e
10、index(s,t)表示子串定位运算。若串t是串s的子串,则函数返回值是串t在串s中第一次出现的开始位置,否则返回值是0。若s="ababa",t="ba",则index(s,t)=()。
A. 0
B. 1
C. 2
D. 3
二、判断题(本大题共15小题,每小题2分,共30分)
1、栈和队列逻辑上都是线性结构。(A.正确)
2、算法的优劣与算法描述语言无关,但与所用计算机有关。(B.错误)
3、在n个结点的无向图中,若边数大于n-1,则该图必是连通图。(B.错误)
4、空串是任意串的子串。(A.正确)
5、快速排序并非在任何情况下都比其他排序方法速度快。(A.正确)
6、通常把串s称为主串,串t称为模式串,从主串s中查找与模式串t完全相同的子串的过程叫做模式匹配。(A.正确)
7、堆排序是一种选择排序。(A.正确)
8、排序的稳定性是指排序算法中的比较次数保持不变,且算法能够终止。(B.错误)
9、文件是性质相同的记录的集合,文件通常存储在外存上。(A.正确)
10、散列文件的优点是存取速度通常比索引文件更快,插入删除方便,不需要索引区。(A.正确)
11、用邻接矩阵法存储一个图所需的存储单元数目与图的边数有关。(B.错误)
12、无向图的邻接矩阵一定是对称矩阵,有向图的邻接矩阵一定是非对称矩阵。(B.错误)
13、散列函数越复杂越好,因为这样随机性好,冲突概率小。(B.错误)
14、负载因子(装填因子)是散列表的一个重要参数,它反映散列表的装满程度。(A.正确)
15、交换排序的基本思想是两两比较待排序记录的排序码,并交换不满足顺序要求的那些偶对,直到全部满足顺序要求为止。(A.正确)
1、算法的有穷性是指一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都可在有穷时间内完成。(A.正确)
2、算法的时间复杂度不仅仅依赖于问题的规模,也取决于输入实例的初始状态。(A.正确)
3、链式存储方法,它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点的逻辑关系由存储单元的邻接关系来体现。(B.错误)
4、在栈中,出栈操作的时间复杂度为O(n)。(B.错误)
5、栈和队列的共同特点是先进先出。(B.错误)
6、在用单链表表示的线性表中,从任何一个结点都能通过next域找到它的后继和前驱。(B.错误)
7、数据结构的概念包括数据之间的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面。(A.正确)
8、给定一棵二叉树结点的先序序列和中序序列就可以唯一地确定一棵二叉树。(A.正确)
9、difference(A,B,C)表示求集合A和B的差集C。(A.正确)
10、完全二叉树中,若一个结点没有左孩子,则它必是树叶。(A.正确)
11、字典是一种特殊的集合,其中每个元素由关键码和属性组成。(A.正确)
12、若n阶方阵的对角线右上方的元素均等于零,称为下三角矩阵。(A.正确)
13、哈希表查找无须进行关键字的比较。(B.错误)
14、直接选择排序是一种不稳定的排序方法。(A.正确)
15、倒排文件的优点是加快查找速度,尤其在处理多个次关键字查找时,查询速度更佳。(A.正确)
三、填空题(本大题共5个空,每空3
1、允许在表的一端插入和删除的线性表称为栈。
2、一个算法的时间复杂度为(n2+2nlog n),其数量级表示为O(n2)。
3、高度为5的完全二叉树T中最多有31个结点。
4、若一棵完全二叉树中有90个结点,其中有45个叶子结点。
5、设森林F 中有四棵树,第一、第二、第三和第四棵树的结点个数分别为50、40、30 和20。由森林F 转换的二叉树中,根结点的左子树上的结点个数是49。
1、在有n 个结点的无向图中,其边数最多为 n(n-1)/2 。
2、有向图G 用邻接矩阵A[n][n]0代表无弧,其i(0≤i≤n -1)行的所有元素之和等于顶点i 的 出 度。
3、设30个整数按从小到大顺序存于一维数组A[30]中,若用二分法进行查找,需要进行5次比较查找成功的整数个数为 15 。
4、二叉排序树在进行 中序 遍历所输出的关键字序列是递增的有序序列。
5、对32,共需进行 5 趟归并。
四、简答题(本大题共3小题,每小题5
1、设广义表L=((a,b),c,((d,e),f),h), 求广义表L 的长度和深度;广义表L 的表头和表尾分别是什么?
1、答: 表L 的长度是4。(1分) 深度是3。(1分)
表L 的表头是(a,b)。(1分)
表尾是(c,((d,e),f),h) 。(2分)
2、设二叉树中每个结点的数据域值为一个字母,请画出先序序列是bcd 的所有不同形态的二叉树。
2、答:(下列每图1分)
3、对整数序列{50,40,20,12,80,18}按从小到大顺序进行排序,请分别写出直接选择排序和二路归并排序的
第一趟排序结果。
3、答:
直接选择排序第一趟排序结果:{12,40,20,50,80,18 } (3分)
二路归并排序第一趟排序结果:{[40,50],[12,20],[18,80]} (2分)
1
G
C D P R E
M K H
1、答:
G
K C
D H P
R E
M
253,46,30,13,42,67,78},散列函数H (k )=k % 10,采用散列表的线性探查法解决冲突。试在0到9的散列地址空间内对该关键字构造散列表,并求出在等概率的情况下,查找成功时的平均查找长度。
2、答: (1) 用函数计算散列地址如下: H (22)=2;H (41)=1;H (53)=3;H (46)=6;H (30)=0; H (13)=3(冲突)=4;H (42)= 2(冲突)=3(冲突)=4(冲突)=5; H (67)= 7;H (78)=8; 构造的散列表如下:
b
d c
b c c c c d d d d
b b b
0 1 2 3 4 5 6 7 8 9
30 41 22 53 13 42 46 67 78
成功探查 1 1 1 1 2 4 1 1 1
(2)在等概率情况下,查找成功的平均查找长度:
ASLs成功=(1+1+1+1+2+4+1+1+1)/9=13/9
3、给定的整数序列{58, 34, 90, 20, 80, 98, 18, 27}进行从小到大排序时,请写出直接选择排序、归并排序的第一趟排序结果。
3、答:
直接选择排序一趟排序结果:{18,34,90,20,80,98,58,27}
归并排序一趟排序结果:{[34,58],[20,90],[80,98],[18,27]}
五、算法题(本大题1小题,共10分)
1、已知一整型数组r,编写一个函数,每输入一个数组元素的下标,便输出相应的数组元素的值,输入-1时结束。
1、
void f(int r[]) // (此语句2分)
{
int i;
scanf(“%d”,&i); // (此语句2分)
while(i!=-1) // (此语句2分)
{
printf(“%d”,r[i]); // (此语句2分)
scanf(“%d”,&i); // (此语句2分)
}
}
1、已知二叉树以二叉链表作存储结构,阅读算法并回答下列问题:
(1) 该算法的功能是什么?
(2) 算法中n的作用是什么?
二叉链表中结点类型定义为:
typedef struct node{char data;
struct node *lchild,*rchild;}BTNode;
int unknown (BTNode *t,int n)
{ if (t)
{ if(t->lchild && t->rchild)
n++;
n=unknown(t->lchild,n);
n=unknown(t->rchild,n);
}
return n;
}
1、答:
(1)该算法的功能是计算二叉树中度为2的结点个数,
(2)算法中n的作用是保存度为2的结点个数。