中国大学MOOC-陈越、何钦铭-数据结构-2016秋期末考试

判断题:

1-1
N2logN和NlogN2具有相同的增长速度。 (2分)

1-2
对一棵平衡二叉树,所有非叶结点的平衡因子都是0,当且仅当该树是完全二叉树。(2分)

1-3
无向连通图所有顶点的度之和为偶数。 (2分)

1-4
对N个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多。 (2分)

1-5
若用平方探测法解决冲突,则插入新元素时,若散列表容量为质数,插入就一定可以成功。 (2分)

选择题:

2-1
设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b、d、c、f、e、a、g,则栈S的容量至少是: (2分)
A、1
B、2
C、3
D、4

2-2
在下列所示的平衡二叉树中,插入关键字48后得到一棵新平衡二叉树。在新平衡二叉树中,关键字37所在结点的左、右子结点中保存的关键字分别是: (4分)

A、13、48
B、24、48
C、24、53
D、24、90

2-3
线性表、堆栈、队列的主要区别是什么?(2分)
A、线性表用指针,堆栈和队列用数组
B、堆栈和队列都是插入、删除受到约束的线性表
C、线性表和队列都可以用循环链表实现,但堆栈不能
D、堆栈和队列都不是线性结构,而线性表是

2-4
对N(N≥2)

个权值均不相同的字符构造哈夫曼树。下列关于该哈夫曼树的叙述中,错误的是: (2分)
A、树中一定没有度为1的结点
B、树中两个权值最小的结点一定是兄弟结点
C、树中任一非叶结点的权值一定不小于下一层任一结点的权值
D、该树一定是一棵完全二叉树

2-5
在并查集问题中,已知集合元素0~8所以对应的父结点编号值分别是{ 1, -4, 1, 1, -3, 4, 4, 8, -2 }(注:?n表示树根且对应集合大小为n),那么将元素6和8所在的集合合并(要求必须将小集合并到大集合)后,该集合对应的树根和父结点编号值分别是多少? (4分)
A、1和-6
B、4和-5
C、8和-5
D、8和-6

2-6
要判断一个整数N(>10)

是否素数,我们需要检查3到√N之间是否存在奇数可以整除N

。则这个算法的时间复杂度是:(2分) 
A、O(N/2)

B、O(√NlogN)

C、O(√N)

D、O(0.5logN)

2-7
在一个有权无向图中,如果顶点b到顶点a的最短路径长度是10,顶点c与顶点b之间存在一条长度为3的边。那么下列说法中有几句是正确的? (2分)
1.c与a的最短路径长度就是13
2.c与a的最短路径长度就是7
3.c与a的最短路径长度不超过13
4.c与a的最短路径不小于7
A、1句
B、2句
C、3句
D、4句

2-8
将MMM个元素存入用长度为SSS的数组表示的散列表,则该表的装填因子为: (2分)
A、S+M

B、M?S

C、M×S

D、M/S

2-9
给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X

% 10

。如果用大小为10的散列表,并且用分离链接法解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)(2分)
A、1, 3, 3, 9, 4, 9, 9
B、1, 3, 4, 9, 7, 5, -1
C、1, 3, 4, 9, 5, 0, 8
D、1, 3, 4, 9, 5, 0, 2

2-10
在拓扑排序算法中用堆栈和用队列产生的结果会不同吗?(2分)
A、是的肯定不同
B、肯定是相同的
C、有可能会不同
D、以上全不对

2-11
将 {28, 15, 42, 18, 22, 5, 40} 逐个按顺序插入到初始为空的最小堆(小根堆)中。则该树的前序遍历结果为:(4分)
A、5, 18, 15, 28, 22, 42, 40
B、5, 15, 18, 22, 28, 42, 40
C、5, 18, 28, 22, 15, 42, 40
D、5, 15, 28, 18, 22, 42, 40

2-12
将1~6这6个键值插到一棵初始为空的二叉搜索树中。如果插入完成后,搜索树结构如图所示,问:可能的插入序列是什么? (2分)

A、1 2 3 4 5 6
B、4 1 2 3 5 6
C、4 1 3 2 6 5
D、4 1 3 2 5 6

2-13
给定一有向图的邻接表如下。从顶点V1出发按广度优先搜索法进行遍历,则得到的一种顶点序列为: (2分)

A、V1,V2,V3,V4,V5
B、V1,V2,V3,V5,V4
C、V1,V3,V2,V4,V5
D、V1,V4,V3,V5,V2

2-14
已知一个图的邻接矩阵如下,则从顶点V1出发按深度优先搜索法进行遍历,可能得到的一种顶点序列为: (2分)

A、V1,V2,V3,V4,V5,V6
B、V1,V2,V4,V5,V6,V3
C、V1,V3,V5,V2,V4,V6
D、V1,V3,V5,V6,V4,V2

2-15
给出关键字序列{ 4321, 56, 57, 46, 28, 7, 331, 33, 234, 63 },下面哪个选择是按次位优先(LSD)链式基数排序进行了一趟分配和收集的结果? (2分)
A、→331→4321→33→63→234→56→46→57→7→28
B、→4321→331→33→63→234→56→46→57→7→28
C、→56→28→4321→331→33→234→46→57→63→7
D、→57→46→28→7→33→234→63→56→4321→331

2-16
将序列{ 2, 12, 16, 88, 5, 10, 34 }排序。若前2趟排序的结果如下:
第1趟排序后:2, 12, 16, 10, 5, 34, 88
第2趟排序后:2, 5, 10, 12, 16, 34, 88
则可能的排序算法是:(2分)
A、冒泡排序
B、快速排序
C、归并排序
D、插入排序

2-17
给定有权无向图的邻接矩阵如下,其最小生成树的总权重是:(2分)

A、24
B、23
C、18
D、17

2-18
在利用堆栈将下列哪个中缀表达式转换为后缀表达式过程中,堆栈的操作系列为: push(′?′)、push(′(′)、push(′+′)、pop()、pop()、pop()、push(′?′)、pop()、push(′+′)、pop()

(2分)
A、2*(3+4)*5+6
B、2*(3+4*5)+6
C、2*(3+4*5+6)
D、以上都是

2-19
采用线性探测冲突解决策略,hi(k)=(H(k)+i)mod11

,将散列函数值分别等于2、2、3、3的四个对象a1、a2、a3、a4都插入一个大小为11的空散列表(哈希表)中。在不同的插入顺序中,哪句有关插入后散列表平均成功查找长度的判断是错的? (4分)
A、按a1、a2、a3、a4顺序和按a1、a3、a4、a2顺序,平均成功查找长度一样;
B、按a1、a3、a2、a4顺序和按a3、a1、a2、a4顺序,平均成功查找长度一样;
C、按a1、a3、a2、a4顺序和按a4、a1、a2、a3顺序,平均成功查找长度一样;
D、按任何插入顺序,其平均成功查找长度都一样.

2-20
将10, 12, 1, 14, 6, 5, 8, 15, 3, 9, 7逐个按顺序插入到初始为空的最小堆中,然后连续执行两次删除最小元素操作(DeleteMin),再插入4,16,此后堆顶的元素是什么? (2分)
A、4
B、5
C、7
D、9

程序填空题:

3-1
下列代码的功能是将小顶堆H中指定位置P上的元素的整数键值下调D个单位,然后继续将H调整为小顶堆。

1 void DecreaseKey( int P, int D, PriorityQueue H )
2 {
3    int i, key;
4    key = H->Elements[P] - D;
5    for ( i = /**/(4分); H->Elements[i/2] > key; i/=2 )
6       //(4分);
7    H->Elements[i] = key;
8 }

3-2
下列代码的功能是将一列元素{ r[1] … r[n] }按非递减顺序排序。普通选择排序是每次仅将一个待排序列的最小元放到正确的位置上,而这个另类的选择排序是每次从待排序列中同时找到最小元和最大元,把它们放到最终的正确位置上。

 1 void  sort( list r[], int n )
 2 {
 3    int i, j, mini, maxi;
 4
 5    for (i=1; i<n-i+1; i++) {
 6       mini = maxi = i;
 7       for( j=i+1; /**/(4分); ++j ){
 8          if( /**/(4分) ) mini = j;
 9          else if(r[j]->key > r[maxi]->key) maxi = j;
10       }
11       if( /**/(4分) ) swap(&r[mini], &r[i]);
12       if( maxi != n-i+1 ){
13          if( /**/(4分) ) swap(&r[mini], &r[n-i+1]);
14          else swap(&r[maxi], &r[n-i+1]);
15       }
16    }
17 }

3-3
本题要求给出希尔排序对给定初始序列{9, 8, 7, 6, 5, 4, 3, 2, 1}利用增量序列{1, 3, 7}进行排序的分步结果。将每步结果填在下列空中。注意:相邻数字间必须有一个空格,开头结尾不得有多余空格。
原始序列 9 8 7 6 5 4 3 2 1
增量7排序后   (2分)
增量3排序后   (2分)
增量1排序后 1 2 3 4 5 6 7 8 9

3-4
本题要求给出下图中从A到其他顶点的最短路径。注意:填空时不能有任何空格。

终点 路径
A->B AB
A->C AC
A->D   (2分)
A->E   (2分)
A->F     (2分)
A->G ABG

编程题:

Description:

本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。

Input:

第一行给出正整数N(<=30)是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。

Output:

在一行中输出Preorder:以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。

Sample Input:

7
2 3 1 5 7 6 4
1 2 3 4 5 6 7

Sample Output:

Preorder: 4 1 3 2 6 5 7

判断题:FFTFF

选择题:CCBDB  CBDAC  CDCBB  BBADA

程序填空题:

P  H->Elements[i] = H->Elements[i/2]

j < n-i+1  r[j]->key < r[mini]->key  mini != i  maxi == i

2 1 7 6 5 4 3 9 8  2 1 4 3 5 7 6 9 8

ABGED  ABGE  ABGEF

编程题:

 1 #include <cstdio>
 2 #include <cstring>
 3
 4 void getpre(int *post, int *in, int n)
 5 {
 6     if(n <= 0) return;
 7     int i = 0, root = post[n-1];
 8     for(; i<n; ++i) {
 9         if(in[i] == root)   break;
10     }
11     printf(" %d", root);
12     getpre(post, in, i);
13     getpre(post+i, in+i+1, n-i-1);
14 }
15
16 int main()
17 {
18     int n, post[40], in[40];
19     scanf("%d", &n);
20     for(int i=0; i<n; ++i) {
21         scanf("%d", &post[i]);
22     }
23     for(int i=0; i<n; ++i) {
24         scanf("%d", &in[i]);
25     }
26
27     printf("Preorder:");
28     getpre(post, in, n);
29
30     return 0;
31 }
// Fin
时间: 2024-11-05 15:55:22

中国大学MOOC-陈越、何钦铭-数据结构-2016秋期末考试的相关文章

中国大学MOOC-陈越、何钦铭-数据结构-2016秋期中考试(附答案)

判断题: 1-1 算法分析的两个主要方面是时间复杂度和空间复杂度的分析. (2分) 1-2 将N个数据按照从小到大顺序组织存放在一个单向链表中.如果采用二分查找,那么查找的平均时间复杂度是O(logN). (3分) 1-3 通过对堆栈S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S).输出的序列为:123. (3分) 1-4 所谓"循环队列"是指用单向循环链表或者循环数组表示的队列. (2分) 1-5 在一棵二叉搜索树

中国大学MOOC-陈越、何钦铭-数据结构-2015秋02-线性结构1题解

设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数.数字间以空格分隔,但结尾不能有多余空格. 输入样例: 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 输出样例: 15 24 -25 22 30 21 -10 20 -21 8 35 6

中国大学MOOC-陈越、何钦铭-数据结构-2017春

跟着<中国大学MOOC-陈越.何钦铭-数据结构-2017春>学习,平时练习一下pat上的作业外:在这里记录一下:平时学习视屏的收获. 1.递归内存爆掉        2.解决问题的效率和算法的技巧有关,第一种写法会被鄙视:当执行时间长的,可以看出效率     

中国大学MOOC-陈越、何钦铭-数据结构基础习题集 03-1. 二分法求多项式单根

03-1. 二分法求多项式单根(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆(浙江大学城市学院) 二分法求函数根的原理为:如果连续函数f(x)在区间[a, b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0. 二分法的步骤为: 检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2:否则 如果f(a)f(b)<0,则计算中点的值f((a+b)/2): 如

Python网络爬虫与信息提取(中国大学mooc)

目录 目录 Python网络爬虫与信息提取 淘宝商品比价定向爬虫 目标获取淘宝搜索页面的信息 理解淘宝的搜索接口翻页的处理 技术路线requests-refootnote 代码如下 股票数据定向爬虫 列表内容 爬取网站原则 代码如下 代码优化 Python网络爬虫与信息提取 淘宝商品比价定向爬虫 股票数据定向爬虫 1. 淘宝商品比价定向爬虫 功能描述 目标:获取淘宝搜索页面的信息 理解:淘宝的搜索接口翻页的处理 技术路线:requests-re[^footnote]. 代码如下: #CrowTa

使用selenium + chrome爬取中国大学Mooc网的计算机学科的所有课程链接

目的:使用selenium + chrome爬取中国大学Mooc网计算机学科的所有的课程链接列表 思路:找到每个分页的节点属性为class="m-course-list" 的div元素,再找到该元素下面的类属性为class = "u-clist f-bg f-cb f-pr j-href ga-click"的div元素的属性data-href的值,使用xpath获取. 难点:在网页源码里面,是看不到相关的课程链接信息,点击分页,发现地址栏的url一直都在变,但改变u

中国大学MOOC 哈工大数据库系统 第8讲模拟练习题答案

完整 中国大学MOOC 哈工大数据库系统 第8讲模拟练习题答案.pdf, 点我下载,进入下载页面点击普通下载 SQL语言的GRANT和REVOKE语句主要是用来维护数据库的_________. A.安全性 B.完整性 C.可靠性 D.一致性 正确答案:A你选对了 2安全性控制的防范对象是_________,防止他们对数据库数据的存取. A.非法非授权用户 B.不符合语义的数据 C.不正确的数据 D.不符合约束的数据 正确答案:A你选对了 原文地址:https://www.cnblogs.com/

中国大学mooc程序设计入门——C语言:第三周测验

1.奇偶个数(5分) 题目内容: 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据.程序输出读到的数据中的奇数和偶数的个数. 输入格式: 一系列正整数,整数的范围是(0,100000).如果输入-1则表示输入结束. 输出格式: 两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数.两个整数之间以空格分隔. 输入样例: 9 3 4 2 5 7 -1 输出样例: 4 2 时间限制:500ms内存限制:32000kb 参考代码: 1 #inc

中国大学MOOC 玩转AutoCAD 熟悉AutoCAD的人机交互方式