华中科技大学887数据结构与算法分析考研真题试题(回忆版)2011—2019年
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.有一个栈, 元素 ABCDE 依次进栈, 这 5 个元素, 出栈顺序为 CBAED, 则栈容量 至少为(B ) A.2 B.3 C.5 D.4
4.一个进行产生数据供另外一个进程处理, 两个进程间的速度可能不同步, 使用下列哪 个数据结构可以有助于解决两个进程间的同步问题?(B )。 A.栈 B.队列 C.树 D.图
8.有 n 个顶点的无向连通图最少有( C)条边。 A.n+1 B.n C.n-1 D.n(n-1) /2
9.下列关于查找的说法, 错误的是(C )。 A.对含有 n(n>0) 个元素的哈希表进行查找, 最坏情况下的查找代价为 O(n) B.对于所有数据结构上的所有查找算法, 最好的查找代价为 O(1) C.在数组上进行查找, 数组中元素必须有序 D.在单链表上进行查找的最好情况下的代价为 O(1)
2019 年华中科技大学 研究生入学考试 887 数据结构与算法分析 回忆版
一、名词解释(20 分) 时间复杂度 哈夫曼树 稳定排序 拓扑排序 链式存储结构
二、选择题(40 分) 1.算法的空间复杂度与(D ) 有关。 A.源程序长度 B.计算机内存大小 C.编译程序 D.问题规模大小
2.以下关于线性表错误的是(C )。 A.线性表元素个数有限 B.线性表可以顺序表示和链式表示 C.数组是线性表 D.可以给线性表中每个元素一个序号
int fun(int n){
if(n<1)
return 0;
printf('%d, ',n);
return(1+fun(2*n/3)+fun(n/3));
}
A. 96421116
B.9642112123211
C. 5321116
D.54321
2.3 堆排序的时间复杂度( )。
A. log(n)
B.n*log(n)
用二次探测再散列处理冲突,画出散列表。 3.5 用算法设计的思想,不全部计算出来求 3 的 96 次方的第十位数值。
四.算法设计(40 分)(请使用类 C 语言编写)
4.1 求二叉树的结点个数,如果根节点为空,则返回 0。
4.2 打印出非递减数组 a 与 b 的升序并集(去除重复元素)。
2017 年华中科技大学 887 数据结构与算法分析
5.一个长度为 8 的串的字串有(C ) 个。 A.8 B.9 C.37 D.256
6.一个树含有 30 个节点, 则它的最大高度为(D )。 A.5
B.4 C.6 D.30
7.某二叉树有两个节点 p 与 q, 对该树进行中序遍历时, p 在 q 的前面, 则( C)。 A.p 是 q 的祖先 B.q 是 p 的祖先 C.p 在 q 左边 D.q 在 p 左边
else return (n+frog(n-1)/2);
}
上述算法时间复杂度是多少(B)
A. logn
B.n
C. nlogn
D. (n)`2
2.3 一个算法的时间复杂度与什么有关(D)
A. 存储器的大小
B. 编程语言
C. 计算机的主频
一.名词解释(25 分,1 个 5 分)
1.1 堆分配存储表示 1.2 完全图 1.3 树的结点层次 1.4 拓扑排序 1.5 时间复杂度
二.选择题(25 分,1 个 5 分)
2.1 折半查找的平均时间复杂度是(B)
A. 1
B.logn
C. n
D. n
2.2 int frog{
if(n==0)
return 1;
3.2 (1、8、2、3、4、5、6、7) 利用数组建成一个小根堆并使用堆排序将其排序成唯一的降 序数组。要求画出所有中间过程。 3.3 12 个权值为 3、4、6、8、12、15、18、22、25、33、36、58 画出哈夫曼树并设计编码。 3.4 {15,25,36,47,58,69}表长 11。H(k)=k%11
C. n
D.n^2
2.4 一棵树的中序 DJGBEHAFIC,先序 ABDGJEHCFI,则后序是(
A.JGBHEBIFCA
B.GBDEFIHCA
C.JGDEHBIFCA
D.都不对
2.5 基数排序的时间复杂度和( )无关。
A.基数的选择
B.数组的最大元素
C.数组长度
D.数组是否排序
三.简答题(60 分)
5、如何用优先队列实现先进先出队列?实现后的出队与入队操作的时间复杂度是多少? (10 分)
四.代码题(50 分) 1.在二叉树中求最小值,并分析时间复杂度。 2.实现邻接链表转化成邻接矩阵, 并分析时间复杂度。 3.有一种数据结构叫做双端队列,支持在队列两端插入删除,在大小为 n 的数组中实现双 端队列相关操作,出入队时间复杂度 O(1)。
)。
3.1 有 3 扇关闭着的门,其中 2 扇门后面各有一只羊,另一扇门后面有一辆车。 参与者:一个游戏者和一个主持人。主持人事先知道各扇门后的物品,而游戏者不知道。 游戏目的:游戏者选择到车。 游戏过程: 1、游戏者随机选定一扇门; 2、在不打开此扇门的情况下,主持人打开另一扇有羊的门。 3、此时面对剩下 2 扇门,游戏者有一次更改上次选择的机会。 问:(画出判定树)游戏者是否应该改变上次的选择,以使选到车的概率较大?
2018 年华中科技大学 887 数据结构与算法分析(回忆版)
一.名词解释(25 分)
1.1 递归函数
1பைடு நூலகம்2 空间复杂度
1.3 满二叉树
1.4 装填因子
1.5 再哈希法
二.选择题(25 分)
2.1 ABCD 入栈,不可能的出栈顺序是( )。
A. ABCD
B.BACD
C. DCAB
D.DCBA
2.2 下列函数,fun(5)的结果是( )。
10.为了更好的实现快速排序算法, 待排序元素宜采用下列哪个结构存储? (B )。 A.单链表 B.数组 C.双链表 D.循环链表
三.简答题(40 分) 1、求 T(n)=2T(n/4)+n2 的时间复杂度并证明(10 分) 2、证明 n 个节点的无向联通图最少有 n-1 条边(7 分) 3、求下面程序的时间复杂度(7 分) void alg(int n) { int p=1, r=n; while(r>0) { p=p*2; r=r/2; } } 4、先序遍历和后序遍历能否确定一个二叉树,中序遍历先序遍历能否确定一颗二叉树,并 分别解释原因(6 分)
4.一个进行产生数据供另外一个进程处理, 两个进程间的速度可能不同步, 使用下列哪 个数据结构可以有助于解决两个进程间的同步问题?(B )。 A.栈 B.队列 C.树 D.图
8.有 n 个顶点的无向连通图最少有( C)条边。 A.n+1 B.n C.n-1 D.n(n-1) /2
9.下列关于查找的说法, 错误的是(C )。 A.对含有 n(n>0) 个元素的哈希表进行查找, 最坏情况下的查找代价为 O(n) B.对于所有数据结构上的所有查找算法, 最好的查找代价为 O(1) C.在数组上进行查找, 数组中元素必须有序 D.在单链表上进行查找的最好情况下的代价为 O(1)
2019 年华中科技大学 研究生入学考试 887 数据结构与算法分析 回忆版
一、名词解释(20 分) 时间复杂度 哈夫曼树 稳定排序 拓扑排序 链式存储结构
二、选择题(40 分) 1.算法的空间复杂度与(D ) 有关。 A.源程序长度 B.计算机内存大小 C.编译程序 D.问题规模大小
2.以下关于线性表错误的是(C )。 A.线性表元素个数有限 B.线性表可以顺序表示和链式表示 C.数组是线性表 D.可以给线性表中每个元素一个序号
int fun(int n){
if(n<1)
return 0;
printf('%d, ',n);
return(1+fun(2*n/3)+fun(n/3));
}
A. 96421116
B.9642112123211
C. 5321116
D.54321
2.3 堆排序的时间复杂度( )。
A. log(n)
B.n*log(n)
用二次探测再散列处理冲突,画出散列表。 3.5 用算法设计的思想,不全部计算出来求 3 的 96 次方的第十位数值。
四.算法设计(40 分)(请使用类 C 语言编写)
4.1 求二叉树的结点个数,如果根节点为空,则返回 0。
4.2 打印出非递减数组 a 与 b 的升序并集(去除重复元素)。
2017 年华中科技大学 887 数据结构与算法分析
5.一个长度为 8 的串的字串有(C ) 个。 A.8 B.9 C.37 D.256
6.一个树含有 30 个节点, 则它的最大高度为(D )。 A.5
B.4 C.6 D.30
7.某二叉树有两个节点 p 与 q, 对该树进行中序遍历时, p 在 q 的前面, 则( C)。 A.p 是 q 的祖先 B.q 是 p 的祖先 C.p 在 q 左边 D.q 在 p 左边
else return (n+frog(n-1)/2);
}
上述算法时间复杂度是多少(B)
A. logn
B.n
C. nlogn
D. (n)`2
2.3 一个算法的时间复杂度与什么有关(D)
A. 存储器的大小
B. 编程语言
C. 计算机的主频
一.名词解释(25 分,1 个 5 分)
1.1 堆分配存储表示 1.2 完全图 1.3 树的结点层次 1.4 拓扑排序 1.5 时间复杂度
二.选择题(25 分,1 个 5 分)
2.1 折半查找的平均时间复杂度是(B)
A. 1
B.logn
C. n
D. n
2.2 int frog{
if(n==0)
return 1;
3.2 (1、8、2、3、4、5、6、7) 利用数组建成一个小根堆并使用堆排序将其排序成唯一的降 序数组。要求画出所有中间过程。 3.3 12 个权值为 3、4、6、8、12、15、18、22、25、33、36、58 画出哈夫曼树并设计编码。 3.4 {15,25,36,47,58,69}表长 11。H(k)=k%11
C. n
D.n^2
2.4 一棵树的中序 DJGBEHAFIC,先序 ABDGJEHCFI,则后序是(
A.JGBHEBIFCA
B.GBDEFIHCA
C.JGDEHBIFCA
D.都不对
2.5 基数排序的时间复杂度和( )无关。
A.基数的选择
B.数组的最大元素
C.数组长度
D.数组是否排序
三.简答题(60 分)
5、如何用优先队列实现先进先出队列?实现后的出队与入队操作的时间复杂度是多少? (10 分)
四.代码题(50 分) 1.在二叉树中求最小值,并分析时间复杂度。 2.实现邻接链表转化成邻接矩阵, 并分析时间复杂度。 3.有一种数据结构叫做双端队列,支持在队列两端插入删除,在大小为 n 的数组中实现双 端队列相关操作,出入队时间复杂度 O(1)。
)。
3.1 有 3 扇关闭着的门,其中 2 扇门后面各有一只羊,另一扇门后面有一辆车。 参与者:一个游戏者和一个主持人。主持人事先知道各扇门后的物品,而游戏者不知道。 游戏目的:游戏者选择到车。 游戏过程: 1、游戏者随机选定一扇门; 2、在不打开此扇门的情况下,主持人打开另一扇有羊的门。 3、此时面对剩下 2 扇门,游戏者有一次更改上次选择的机会。 问:(画出判定树)游戏者是否应该改变上次的选择,以使选到车的概率较大?
2018 年华中科技大学 887 数据结构与算法分析(回忆版)
一.名词解释(25 分)
1.1 递归函数
1பைடு நூலகம்2 空间复杂度
1.3 满二叉树
1.4 装填因子
1.5 再哈希法
二.选择题(25 分)
2.1 ABCD 入栈,不可能的出栈顺序是( )。
A. ABCD
B.BACD
C. DCAB
D.DCBA
2.2 下列函数,fun(5)的结果是( )。
10.为了更好的实现快速排序算法, 待排序元素宜采用下列哪个结构存储? (B )。 A.单链表 B.数组 C.双链表 D.循环链表
三.简答题(40 分) 1、求 T(n)=2T(n/4)+n2 的时间复杂度并证明(10 分) 2、证明 n 个节点的无向联通图最少有 n-1 条边(7 分) 3、求下面程序的时间复杂度(7 分) void alg(int n) { int p=1, r=n; while(r>0) { p=p*2; r=r/2; } } 4、先序遍历和后序遍历能否确定一个二叉树,中序遍历先序遍历能否确定一颗二叉树,并 分别解释原因(6 分)