2022年东北石油大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年东北石油大学计算机科学与技术专业《数据结构与算法》科目
期末试卷A(有答案)
一、选择题
1、用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿
链移动的操作为()。
A.j=r[j].next
B.j=j+l
C.j=j->next
D.j=r[j]->next
2、哈希文件使用哈希函数将记录的关键字值计算转化为记录的存放地址,因为哈希函数
是一对一的关系,则选择好的()方法是哈希文件的关键。
A.哈希函数
B.除余法中的质数
C.冲突处理
D.哈希函数和冲突处理
3、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,
则利用()存储方式最节省时间。
A.顺序表
B.双链表
C.带头结点的双循环链表
D.单循环链表
4、循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列
中的元素数是()。
A.(rear-front+m)%m
B.rear-front+1
C.rear-front-1
D.rear-front
5、向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行()。
A.h->next=s
B.s->next=h
C.s->next=h;h->next=s
D.s->next=h-next;h->next=s
6、循环队列放在一维数组A中,end1指向队头元素,end2指向队尾元素的后一个位置。
假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。
初始时为空,
下列判断队空和队满的条件中,正确的是()。
A.队空:end1==end2;队满:end1==(end2+1)mod M
B.队空:end1==end2;队满:end2==(end1+1)mod (M-1)
C.队空:end2==(end1+1)mod M;队满:end1==(end2+1) mod M
D.队空:end1==(end2+1)mod M;队满:end2==(end1+1) mod (M-1)
7、若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三
次进行退栈操作,则不可能得到的出栈序列是()。
8、一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到()个不同的码字。
A.107
B.108
C.214
D.215
9、每个结点的度或者为0或者为2的二叉树称为正则二叉树。
n个结点的正则二叉树中
有()个叶子。
A.log2n
B.(n-1)/2
C.log2n+1
D.(n+1)/2
10、一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第
一个记录为基准得到的一次划分结果为()。
A.(38,40,46,56,79,84)
B.(40,38,46,79,56,84)
C.(40,38,46,56,79,84)
D.(40,38,46,84,56,79)
二、填空题
11、N个顶点的连通图用邻接矩阵表示时,该矩阵至少有______个非零元素。
12、无用单元是指______,例______
13、文件可按其记录的类型不同而分成两类,即______和______文件。
14、线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则
删除一个元素平均需要移动元素的个数是______。
15、以下是用类C语言写出的算法,该算法将以二叉链表存储的二叉树中的叶结点按从
左到右的顺序链成一个带头结点的双向循环链表,链接时,结点的Lchild域作为前链域,指向结点的直接前驱,结点的Rchild 域作为后链域,指向结点的直接后继。
算法中,使
用一个顺序栈stack,栈顶指针为top,p,t为辅助指针,head为双向循环链表的头指针。
试填充算法中的空格,使算法完整。
16、在顺序存储的二叉树中,编号为i和j的两个结点处在同一层的条件是______。
17、下列程序是快速排序的非递归算法,请填写适当的语句,完成该功能。
18、设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[45,68]的存储地址为______;若以列序为主序顺序存储,则元素a[45,
68]的存储地址为______。
三、判断题
19、对处理大量数据的外存介质而言,索引顺序存取方法是一种方便的文件组织方法。
()
20、倒排文件是对次关键字建立索引。
()
21、队列和栈都是运算受限的线性表,只允许在表的两端进行运算。
()
22、栈的输入序列是1,2,…,n,输出序列是a1,a2,…,an若 ai=n(1≤i≤n)则有:ai>ai+1>…>an。
()
23、中序遍历一棵二叉排序树的结点就可得到排好序的结点序列。
()
24、二叉树是一般树的特殊情形。
()
25、线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。
()
26、在用堆排序算法排序时,如果要进行增序排序,则需要采用“大根堆”。
()
27、连通图上各边权值均不相同,则该图的最小生成树是唯一的。
()
28、B-树中所有结点的平衡因子都为零。
()
四、简答题
29、写出下列排序算法的基本思想,并写出对序列(23,12,35,47, 16,25,36,
19,21,16)进行排序时每一趟的结果。
30、下面程序段的时间复杂度是什么?
31、对下面的关键字集{30,15,21,40,25,26,36,37}若查找表的装填因子为0.8,采用线性探测再哈希方法解决冲突,做:(1)设计哈希函数;(2)画出哈希表;(3)
计算查找成功和查找失败的平均查找长度;(4)写出将哈希表中某个数据元素删除的算法。
五、算法设计题
32、请编写完整的程序。
如果矩阵A中存在这样的一个元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。
请编程计算出m*n的矩阵A的所有马鞍点。
33、已知一棵二叉树的前序遍历序列和中序遍历序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。
34、用邻接多重表存储结构,编写FIRST-ADJ (G,V)函数,函数返回值为第一个邻接点,若V没有邻接点,返回零。
35、编程:假设以数组Q[m]存放循环队列中的元素,同时以rear和length 分别指示环形队列中的队尾位置和队列中所含元素的个数。
试给出该循环队列的队空条件和队满条件,并写出相应的初始化(initqueue),插入(enqueue)和删除(dequeue)元素的操作。
参考答案
一、选择题
1、【答案】A
2、【答案】D
3、【答案】A
4、【答案】A
5、【答案】D
6、【答案】A
7、【答案】D
8、【答案】B
9、【答案】D
10、【答案】C
二、填空题
11、【答案】2(N-1)
12、【答案】用户不再使用而系统没有回收的结构和变量; p=ma11oc(size);…,p=nu11
13、【答案】操作系统文件;数据库
14、【答案】(n-1)/2
15、【答案】p->Rchild=t;t->Lchild=p;p=t;t->Rchild!=null;t->Rchild;t->Lchild!=null;t->Lchild;p->Rchild=head;head->Lchild=p
16、【答案】
【解析】用顺序存储结构存储二叉树时,要按完全二叉树的形式存储,非完全二叉树存储时,要加“虚结点”。
设编号为i和j的结点在顺序存储中的下标为s和t,则结点i和j在
同一层上的条件是
17、【答案】a[j]=a[k];low=stack[top][0];stack[top][0]=k+1
【解析】快速排序(quick sort)的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录
继续进行排序,以达到整个序列有序。
18、【答案】9174;8788
三、判断题
19、【答案】×
20、【答案】√
21、【答案】×
22、【答案】×
23、【答案】√
24、【答案】×
25、【答案】×
26、【答案】√
27、【答案】√
28、【答案】√
四、简答题
29、答:此排序为双向起泡排序:从前向后一趟排序下来得到一个最大值,若其中发生
交换,则再从后向前一趟排序,得到一个最小值。
第一趟:12,23,35,16,25,36,19,21,16,47 第二趟:12,16,23,35,16,25,36,19,21,47 第三趟:12,16,23,16,25,35,19,21,36,47 第四趟:12,16,16,23,19,25,35,21,36,47 第五趟:12,16,16,19,23,25,21,35,36,47 第六趟:12,16,16,19,21,23,25,35,36,47 第七趟:12,16,16,19,21,23,25,35,36,47
30、答:赋值语句一共被执行了m*n次,所以该程序段的时间复杂度是O(m*n)。
31、答:(1)由于装填因子为0.8,关键字有8个,所以表长为8/0.8=10。
用除留余数
法设计哈希函数,哈希函数为14(key)=key%7。
(2)哈希表如表所示:
(3)计算查找失败时的平均查找长度,必须计算不在表中的关键字,当其哈希地址为i (0≤i≤m-1)时的查找次数。
本例中m=10。
故查找失败和查找成功时的平均查找长度分别为:
(4)算法如下:
五、算法设计题
32、答:算法如下:
33、答:算法如下:
34、答:算法如下:
35、答:定义队列:
设cq是seQueue类型变量,则当cq.length==0时队列空,当cq.1ength==m时队列满。
(1)队列的初始化:
(2)队列的插入:
(3)队列的删除:。