2022年荆楚理工学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2022年荆楚理工学院计算机科学与技术专业《数据结构与算法》科目
期末试卷A(有答案)
一、选择题
1、下述文件中适合于磁带存储的是()。

A.顺序文件
B.索引文件
C.哈希文件
D.多关键字文件
2、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。

A.快速排序
B.堆排序
C.归并排序
D.直接插入排序
3、静态链表中指针表示的是()。

A.下一元素的地址
B.内存储器的地址
C.下一元素在数组中的位置
D.左链或右链指向的元素的地址
4、已知串S='aaab',其next数组值为()。

A.0123
B.1123
C.1231
D.1211
5、循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。

A.(rear-front+m)%m
B.rear-front+1
C.rear-front-1
D.rear-front
6、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。

A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=2
7、排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。

下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。

Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排Ⅴ.二路归并排序
A.仅Ⅰ、Ⅲ、Ⅳ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅱ、Ⅲ、Ⅳ D.仅Ⅲ、Ⅳ、Ⅴ
8、在下述结论中,正确的有()。

①只有一个结点的二叉树的度为0。

②二叉树的度为2。

③二叉树的左右子树可任意交换。

④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A.①②③
B.⑦③④
C.②④
D.①④
9、一个具有1025个结点的二叉树的高h为()。

A.11
B.10
C.11至1025之间
D.10至1024之间
10、对n个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确的是()。

A.每次分区后,先处理较短的部分
B.每次分区后,先处理较长的部分
C.与算法每次分区后的处理顺序无关
D.以上三者都不对
二、填空题
11、对n个记录的表r[1..n]进行简单选择排序,所需进行的关键字间的比较次数为______。

12、对单链表中元素按插入方法排序的C语言描述算法如下,其中L为链表头结点指针。

请填充算法中标出的空白处,完成其功能。

13、在双向循环链表中,向p所指的结点之后插入指针f所指的结点,其操作是______、
______、______、______。

14、设单链表的结点结构为(data,next),next为指针域,已知指针px 指向单链表中data为x的结点,指针py指向data为y的新结点,若将结点y 插入结点x之后,则需
要执行以下语句:______
15、在一棵m阶B-树中,若在某结点中插入一个新关键字而引起该结点分裂,则此结点中原有的关键字的个数是______;若在某结点中删除一个关键字而导致结点合并,则该
结点中原有的关键字的个数是______。

16、设正文串长度为n,模式串长度为m,则串匹配的KMP算法的时间复杂度为______。

17、一棵有n个结点的满二叉树有______个度为1的结点、有______个分支(非终端)结
点和______个叶子,该满二叉树的深度为______。

18、设广义表L=((),()),则head(L)是______; tail(L)是______;L的长度是
______;深度是______。

三、判断题
19、哈希表与哈希文件的唯一区别是哈希文件引入了“桶”的概念。

()
20、对磁带机而言,ISAM是一种方便的文件组织方法()
21、设栈采用顺序存储结构。

若已有i-1个元素入栈,则将第i个元素入栈时,入栈算法
的时间复杂性为O(i)。

()
22、栈的输入序列是1,2,…,n,输出序列是a1,a2,…,an若 ai=n(1≤i≤n)则有:ai>ai+1>…>an。

()
23、深度为k的二叉树中结点总数小于等于2k-1。

()
24、用一维数组存储二叉树时,总是以前序遍历顺序存储结点。

()
25、在外部排序过程中,对长度为n的初始序列进行“置换-选择”排序时,可以得到的最
大初始有序段的长度不超过n/2。

()
26、数据的逻辑结构是指数据的各数据项之间的逻辑关系。

()
27、对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找成功,它们的平均查找长度是相同的,而对于查找失败,它们的平均查找长度是不同的。

()
28、在索引顺序表中,实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每块中元素个数有关。

()
四、简答题
29、下面程序段的时间复杂度是什么?
30、对于具有n个叶结点且所有非叶结点都有左、右孩子的二叉树。

(1)试问这种二叉树的结点总数是多少?
(2)试证明2-(li-1)=1。

其中:l i表示第i个叶结点所在的层号(设根结点所在层号为1)。

31、已知有6个顶点(顶点编号为0~5)的有向带权图G,其邻接矩阵A 为上三角矩阵,按行为主序(行优先)保存在如下的一维数组中。

要求:
(1)写出图G的邻接矩阵A。

(2)画出有向带权图G。

求图G的关键路径,并计算该关键路径的长度。

五、算法设计题
32、线性表中元素存放在向量A(1,…,l)中,元素是整型数。

试写出递归算法求出A
中的最大和最小元素。

33、图G有n个点,利用从某个源点到其余各点最短路径算法思想,设计一产生G的最
小生成树的算法。

34、请编写完整的程序。

如果矩阵A中存在这样的一个元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。

请编程计算出m*n的矩阵A的所有马鞍点。

35、在输入数据无序的情况下,建立一个数据值为整型的递增有序的顺序存储线性表L,且要求当输入相同数据值时,线性表中不能存在数据值相同的数据元素,试写出其算法。

顺序存储结构的线性表描述为:
参考答案
一、选择题
1、【答案】A
2、【答案】C
3、【答案】C
4、【答案】A
5、【答案】A
6、【答案】C
7、【答案】A
8、【答案】D
9、【答案】C
10、【答案】A
二、填空题
11、【答案】n(n-1)/2
12、【答案】
(1)L->next=NULL//置空链表,然后将原链表结点逐个插入到有序表中(1)p!=NULL//当链表尚未到尾,p为工作指针
(2)q!=NULL//查P结点在链表中的插入位置,这时q是工作指针(4)p->next=r->next//将P结点链入链表中
(5)r->next=p//r是q的前驱,u是下个待插入结点的指针
13、【答案】f->next=p->next;f->prior=p;p->next->prior=f;p->next=f。

14、【答案】py->next=px->next;px->next=py
15、【答案】
【解析】m阶B-树除根结点和叶子结点外,结点中关键字个数最多是m1,最少
16、【答案】O(m+n)
17、【答案】
【解析】满二叉树没有度为1的结点,度为0的结点等于度为2的结点个数+1。

18、【答案】();(());2;2
三、判断题
19、【答案】×
20、【答案】×
21、【答案】×
22、【答案】×
23、【答案】√
24、【答案】×
25、【答案】×
26、【答案】×
27、【答案】√
28、【答案】√
四、简答题
29、答:赋值语句一共被执行了m*n次,所以该程序段的时间复杂度是O(m*n)。

30、答:(1)根据二叉树中度为2的结点个数等于叶结点个数减1的性质,故具有n个叶结点且非叶子结点均有左子树的二叉树的结点数是2n-1。

(2)证明:当i=1时,2-(1-1)=20=1,公式成立。

设当i=n-1时公式成立,证明当i=n时公
式仍成立。

设某叶结点的层号为t,当将该结点变为内部结点,从而再增加两个叶结点时,这两个叶结点的层号都是t+1,对于公式的变化,是减少了一
个原来的叶结点,增加了两个新叶结点,反映到公式中,因为2-(t-1)=2-(t+1-1)+2-
(t+1-1),所以结果不变,这就证明当i=n时公式仍成立。

证毕。

31、答:(1)由题可以画出待定上三角矩阵的结构图如下(图中?为待定元素):
可以看出,第一行至第五行主对角线上方的元素分别为5,4,3,2,1 个,由此可以画
出压缩存储数组中的元素所属行的情况,如下图所示:
将各元素填入各行即得邻接矩阵:
(2)根据第一步所得矩阵A容易做出有向带权图G,如下:
(3)关键路径为0->1->2->3->5(如下图所示粗线表示),长度为4+5+4+3=16。

五、算法设计题
32、答:算法如下:
33、答:算法如下:
34、答:算法如下:
35、答:算法如下:。

相关文档
最新文档