2022年陇东学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年陇东学院计算机科学与技术专业《数据结构与算法》科目期末
试卷A(有答案)
一、选择题
1、下述文件中适合于磁带存储的是()。
A.顺序文件
B.索引文件
C.哈希文件
D.多关键字文件
2、将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。
A.N
B.2N-1
C.2N
D.N-1
3、以下数据结构中,()是非线性数据结构。
A.树
B.字符串
C.队
D.栈
4、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()。
A.仅修改队头指针
B.仅修改队尾指针
C.队头、队尾指针都可能要修改
D.队头、队尾指针都要修改
5、下列关于AOE网的叙述中,不正确的是()。
A.关键活动不按期完成就会影响整个工程的完成时间
B.任何一个关键活动提前完成,那么整个工程将会提前完成
C.所有的关键活动提前完成,那么整个工程将会提前完成
D.某些关键活动若提前完成,那么整个工程将会提前完成
6、下列叙述中,不符合m阶B树定义要求的是()。
A.根结点最多有m棵子树 B.所有叶结点都在同一层上
C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接
7、下列选项中,不能构成折半查找中关键字比较序列的是()。
A.500,200,450,180 B.500,450,200,180
C.180,500,200,450 D.180,200,500,450
8、每个结点的度或者为0或者为2的二叉树称为正则二叉树。
n个结点的正则二叉树中有()个叶子。
A.log2n
B.(n-1)/2
C.log2n+1
D.(n+1)/2
9、有关二叉树下列说法正确的是()。
A.二叉树的度为2
B.一棵二叉树的度可以小于2
C.二叉树中至少有一个结点的度为2
D.二叉树中任何一个结点的度都为2
10、下列二叉排序树中查找效率最高的是()。
A.平衡二叉树
B.二叉查找树
C.没有左子树的二叉排序树
D.没有右子树的二叉排序树
二、填空题
11、以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之。
12、起始地址为480,大小为8的块,其伙伴块的起始地址是______;若块大小为32,则
其伙伴块的起始地址为______。
13、VSAM系统是由______、______、______构成的。
14、设单链表的结点结构为(data,next),next为指针域,已知指针px 指向单链表中data为x的结点,指针py指向data为y的新结点,若将结点y 插入结点x之后,则需
要执行以下语句:______
15、在一棵m阶B-树中,若在某结点中插入一个新关键字而引起该结点分裂,则此结点中原有的关键字的个数是______;若在某结点中删除一个关键字而导致结点合并,则该
结点中原有的关键字的个数是______。
16、设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[45,68]的存储地址为______;若以列序为主序顺序存储,则元素a[45,68]的存储地址为______。
17、已知一循环队列的存储空间为[m..n],其中n>m,队头和队尾指针分别为front和rear,则此循环队列判满的条件是______。
18、设有一个10阶对称矩阵A采用压缩存储方式(以行为主序存储: a11=1),则a85
的地址为______。
三、判断题
19、倒排序文件的优点是维护简单。
()
20、倒排文件是对次关键字建立索引。
()
21、KMP算法的特点是在模式匹配时指示主串的指针不会变小。
()
22、一个广义表可以为其他广义表所共享。
()
23、用一维数组存储二叉树时,总是以前序遍历顺序存储结点。
()
24、一棵树中的叶子数一定等于与其对应的二叉树的叶子数。
()
25、为提高排序速度,进行外排序时,必须选用最快的内排序算法。
()
26、快速排序和归并排序在最坏情况下的比较次数都是O(nlog2n)。
()
27、连通图上各边权值均不相同,则该图的最小生成树是唯一的。
()
28、若一个有向图的邻接矩阵对角线以下元素均为零,则该图的拓扑有序序列必定存在。
()
四、简答题
29、请写出应填入下列叙述中()内的正确答案。
排序有各种方法,如插入排序、快速排序、堆排序等。
设一数组中原有数据如下:15,13,20,18,12,60。
下面是一组用不同排序方法进行一遍排序后的结果。
()排序的结果为:12,13,15,18,20,60
()排序的结果为:13,15,18,12,20,60
()排序的结果为:13,15,20,18,12,60
()排序的结果为:12,13,20,18,15,60
30、用一个数组S(设大小为MAX)作为两个堆栈的共享空间。
请说明共享方法,栈满/栈空的判断条件,并用C语言或PASCAL语言设计公用的入栈操作push(i,x),其中i为0或1,用于表示栈号,x为入栈值。
31、假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间。
例如,“loading”和“being”的存储映像如图所示。
图5存储映像示意图
设str1和str2分别指向两个单词所在单链表的头结点,链表结点结构为,请设计一个时间上尽可能高效的算法,找出由str1和str2所指的两个链表共同后缀的起始位置(如图中字符i所在结点的位置p)。
要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或JAVA语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度。
五、算法设计题
32、已知指针p指向带表头的中根次序线索二叉树中的某结点,试写一算法FFA(p,q),该算法寻找结点p的父亲结点q。
设线索二叉树的结点结构、表头结点结构和空树结构分别为(LTAG,LLINK,INFO, RLlNK,RTAG),且规定线索树的最左下结点
的LLINK域和最右下结点的RLINKt域指向表头。
33、借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key的记录。
设此组记录存放于数组r[1..h]中。
若查找成功,则输出该记录在r数组中的位置及其值,
否则显示“not find”信息。
请编写出算法并简要说明算法思想。
34、请编写完整的程序。
如果矩阵A中存在这样的一个元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。
请编程计算出m*n的矩阵A的所有马鞍点。
35、已知一个单链表中每个结点存放一个整数,并且结点数不少于2,请设计算法以判断该链表中第二项起的每个元素值是否等于其序号的平方减去其前驱的值,若满足则返回ture,否则返回false。
参考答案
一、选择题
1、【答案】A
2、【答案】A
3、【答案】A
4、【答案】C
5、【答案】B
6、【答案】D
7、【答案】A
8、【答案】D
9、【答案】B
10、【答案】A
二、填空题
11、【答案】
(1)p!=NULL //链表未到尾就一直进行
(2)q //将当前结点作为头结点后的第一元素结点插入
12、【答案】480+8=488;480-32=448
13、【答案】索引集;顺序集;数据集
14、【答案】py->next=px->next;px->next=py
15、【答案】
【解析】m阶B-树除根结点和叶子结点外,结点中关键字个数最多是m1,最少16、【答案】9174;8788
17、【答案】(rear+1)%(n-m+1)==front
18、【答案】33
三、判断题
19、【答案】×
20、【答案】√
21、【答案】√
22、【答案】√
23、【答案】×
24、【答案】×
25、【答案】×
26、【答案】×
27、【答案】√
28、【答案】√
四、简答题
29、答:①快速排序②起泡排序③直接插入排序④堆排序
30、答:两栈共享一向量空间(一维数组),栈底设在数组的两端,两栈顶相邻时为栈满。
设共享数组为S[MAX],则一个栈顶指针为一l,另一个
栈顶指针为MAX时,栈为空。
用C语言写的入栈操作push(i,x)如下:
31、答:算法的基本设计思想:①分别求出str1和str2所指的两个链表的长度m和n。
②将两个链表以表尾对齐,令指针p、q分别指向str1和str2的头结点,若m>n,则使
p指向链表中的第m-n+1个结点;若m<n,则使q指向链表中的第n-m+1个结点,即使指针p和q所指的结点到表尾的长度相等。
③反复将指针p和q同步向后移动,并判断它们是否指向同一结点。
若p 和q指向同一
结点,则该点即为所求的共同后缀的起始位置。
(1)用C语言算法描述如下:
(2)参考答案的时间复杂度为:O(m+n)或O(max(m,n))。
其中m、n 分别为两个链表的长度。
五、算法设计题
32、答:算法如下:
33、答:算法如下:
34、答:算法如下:
35、答:算法如下:。