2022年河池学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年河池学院计算机科学与技术专业《数据结构与算法》科目期末
试卷A(有答案)
一、选择题
1、n个结点的完全有向图含有边的数目()。
A.n*n
B.n(n+1)
C.n/2
D.n*(n-1)
2、有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是()。
A.60
B.66
C.18000
D.33
3、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
A.单链表
B.仅有头指针的单循环链表
C.双链表
D.仅有尾指针的单循环链表
4、在用邻接表表示图时,拓扑排序算法时间复杂度为()。
A.O(n)
B.O(n+e)
C.O(n*n)
D.O(n*n*n)
5、下面关于串的叙述中,不正确的是()。
A.串是字符的有限序列
B.空串是由空格构成的串
C.模式匹配是串的一种重要运算
D.串既可以采用顺序存储,也可以采用链式存储
6、排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。
下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。
Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排Ⅴ.二路归并排序
A.仅Ⅰ、Ⅲ、Ⅳ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅱ、Ⅲ、Ⅳ D.仅Ⅲ、Ⅳ、Ⅴ
7、下列叙述中,不符合m阶B树定义要求的是()。
A.根结点最多有m棵子树 B.所有叶结点都在同一层上
C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接
8、有n(n>0)个分支结点的满二叉树的深度是()。
A.n2-1
B.log2(n+1)+1
C.log2(n+1)
D.log2(n-l)
9、已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历结果为()。
A.CBEFDA
B.FEDCBA
C.CBEDFA
D.不定
10、在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()。
A.直接插入排序
B.起泡排序
C.简单选择排序
D.快速排序
二、填空题
11、以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之。
12、对单链表中元素按插入方法排序的C语言描述算法如下,其中L为链表头结点指针。
请填充算法中标出的空白处,完成其功能。
13、已知有序表为(12,18,24,35,47,50,62,83,90,115, 134)当用二分法查找90时,需______次查找成功,查找47时______成功,查找100时,需______次才能确定不成功。
14、设有两个算法在同一机器上运行,其执行时闻分别为100n2和2n,要使前者快于后者,n至少为______。
15、如下的算法分别是后序线索二叉树求给定结点node的前驱结点与后继结点的算法,请在算法空格处填上正确的语句。
设线索二叉树的结点数据结构为(lflag,left,data,right,rflag),其中:lflag=0,left指向其左孩子,lflag=1,left指向其前驱;rflag=0,right指向其右孩子,rflag=1,right指向其后继。
16、设T和P是两个给定的串,在T中寻找等于P的子串的过程称为______,又称P为______。
17、在顺序存储的二叉树中,编号为i和j的两个结点处在同一层的条件是______。
18、假设一个15阶的上三角矩阵A按行优先顺序压缩存储在一维数组B 中,则非零元素A9.9在B中的存储位置k=______。
(注:矩阵元素下标从1开始)
三、判断题
19、倒排文件的目的是为了多关键字查找。
()
20、直接访问文件也能顺序访问,只是一般效率不高。
()
21、稀疏矩阵压缩存储后,必会失去随机存取功能。
()
22、栈的输入序列是1,2,…,n,输出序列是a1,a2,…,an若 ai=n(1≤i≤n)则有:ai>ai+1>…>an。
()
23、中序遍历一棵二叉排序树的结点就可得到排好序的结点序列。
()
24、深度为k的二叉树中结点总数小于等于2k-1。
()
25、在待排数据基本有序的情况下,快速排序效果最好。
()
26、外部排序是把外存文件调入内存,可利用内部排序的方法进行排序,因此排序所花的时间取决于内部排序的时间。
()
27、在索引顺序表中,实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每块中元素个数有关。
()
28、当改变网上某一关键路径上任一关键活动后,必将产生不同的关键路径。
()
四、简答题
29、下面程序段的时间复杂度是什么?
30、已知n阶下三角矩阵A(即当i<j时,有a ij=0),按照压缩存储的思想,可以将其
主对角线以下所有元素(包括主对角线上元素)依次存放于一维数组B中,请写出从第
一列开始采用列序为主序分配方式时在B 中确定元素a ij的存放位置的公式。
31、已知一个带有表头结点的单链表,结点结构为
假设该链表只给出了头指针list。
在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。
若查找成功,算法输出该结点的data域的值,并返回1;否则,只返回0。
要求:
(1)描述算法的基本设计思想。
(2)描述算法的详细实现步骤。
(3)根据设计思想和实现步骤,采用程序设计语言描述算法(使用C或C++或JAVA语言实现),关键之处请给出简要注释。
五、算法设计题
32、已知指针p指向带表头的中根次序线索二叉树中的某结点,试写一算法FFA(p,q),该算法寻找结点p的父亲结点q。
设线索二叉树的结点结构、表头结点结构和空树结构分别为(LTAG,LLINK,INFO, RLlNK,RTAG),且规定线索树的最左下结点的LLINK域和最右下结点的RLINKt域指向表头。
33、设从键盘输入一整数的序列:a1,a2,a3,…,a n,试编写算法实现:用栈结构存储输入的整数,当a i≠-1时,将a i入栈;当a i=-l时,输出栈顶整数并出栈。
算法应对异常情况(入栈满等)给出相应的信息。
34、起泡排序算法是把大的元素向上移(气泡的上浮),也可以把小的元素向下移(气泡的下沉);请给出上浮和下沉过程交替的起泡排序算法。
35、设有两个栈S1,S2都采用顺序栈方式,并且共享一个存储区 [0..maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。
试设计S1,S2有关入栈和出栈的操作算法。
参考答案
一、选择题
1、【答案】D
2、【答案】B
3、【答案】D
4、【答案】B
5、【答案】B
6、【答案】A
7、【答案】D
8、【答案】C
9、【答案】A
10、【答案】A
二、填空题
11、【答案】
(1)p!=NULL //链表未到尾就一直进行
(2)q //将当前结点作为头结点后的第一元素结点插入
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、【答案】2;4;3
【解析】二分法查找元素次数列表
查找100是找到115就停止了。
14、【答案】15
15、【答案】node->rflag==0;*x=bt;*x=node->right;prior(t,x)
16、【答案】模式匹配;模式串
17、【答案】
【解析】用顺序存储结构存储二叉树时,要按完全二叉树的形式存储,非完全二叉树存储时,要加“虚结点”。
设编号为i和j的结点在顺序存储中的下标为s和t,则结点i和j在同一层上的条件是
18、【答案】93
三、判断题
19、【答案】√
20、【答案】×
21、【答案】√
22、【答案】×
23、【答案】√
24、【答案】√
25、【答案】×
26、【答案】×
27、【答案】√
28、【答案】×
四、简答题
29、答:赋值语句一共被执行了m*n次,所以该程序段的时间复杂度是O(m*n)。
30、答:2阶下三角矩阵元素A[i][j](1≤i,j≤n,i≥j)。
第1列有n个元素,第j 列有n-j+1个元素,第1列到第j-1列是梯形,元素数为(n+(n-j+2)(j-1)/2,而a ij在第j列上的位置是为i-j+1。
所以n阶下三角矩阵A按列存储,其元素a ij在一维数组B中的存储位置k与i和j的关系为:
31、答:(1)算法的基本设计思想定义两个指针变量p和q,初始时均指向头结点的下一个结点。
p指针沿链表移动;当p指针移动到第k个结点时,q指针开始与p指针同步移动;当p指针移动到链表最后一个结点时,因为p和q相隔k,故q指针所指元素为倒数第k个结点。
以上过程对链表仅进行一遍扫描。
(2)算法的详细实现步骤
① count=0,p和q指向链表表头结点的下一个结点。
②若p为空,转⑤。
③若count等于k,则q指向下一个结点;否则,count=count+1。
④ p指向下一个结点,转步骤②。
⑤若count等于k,则查找成功,输出该结点的data域的值,返回1;否则,查找失败,返回0。
⑥算法结束。
(3)算法实现
五、算法设计题
32、答:算法如下:
33、答:算法如下:
34、答:算法如下:
35、答:栈的定义:(1)入栈操作:
(2)出栈操作。