苏州大学研究生试卷2012年数据结构本科A
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉大学计算机学院
2011年-2012学年第二学期“数据结构”考试试题(A)
要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。每张答题纸都要写上姓名和学号。
一、单项选择题(共20小题,每小题2分,共40分)
1. 下列各选项中属于逻辑结构的是。
A. 哈希表
B.有序表
C. 线索二叉树
D. 单链表
2. 从逻辑上可以把数据结构分为两大类。
A. 动态结构、静态结构
B. 顺序结构、链式结构
C. 线性结构、非线性结构
D. 初等结构、构造型结构
3. 算法的时间复杂度取决于。
A. 问题的规模
B. 待处理数据的初始状态
C. A和B
D. A和B都不对
4. 建一个有n个元素的有序单链表,其算法的时间复杂度为。
A. O(1)
B. O(n)
C. O(nlogn)
D. O(n2)
5. 若某线性表中最常用的操作是读取第i个元素和找到第i个元素的直接前驱,则应
采用存储方式最节省运算时间。
A. 单链表
B. 顺序表
C. 双向链表
D. 单循环链表
6. 执行操作时,需要使用队列作为辅助存储空间。
A. 查找哈希表
B. 广度优先搜索
C. 用Dijkstra算法求最短路径
D. 深度优先搜索网
7. 用链式方式存储的队列,在进行删除运算时。
A. 仅修改头指针
B. 仅修改尾指针
C. 队首、队尾指针都要修改
D. 队首、队尾指针可能都要修改
8. 递归过程或函数调用时,处理参数及返回地址,要用一种称为的数据结构。
A. 队列
B. 多维数组
C. 栈
D. 线性表
9. 线索二叉树是一种结构。
A. 逻辑
B. 逻辑和存储
C. 物理
D. 线性
10. 已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,那么其前缀形
式应为。
A. –A+B*C/DE
B. –A+B*CD/E
C. -+*ABC/DE
D. -+A*BC/DE
11. 一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到个不同的码字。
A.107
B.108
C.214
D.215
12. 一个具有n个顶点的连通无向图,至少有条边。
A. n
B. n+1
C. n-1
D. n/2
13. 的邻接矩阵是对称矩阵?
A. 有向图
B. 无向图
C. AOV网
D. AOE网
14. 判断一个有向图是否存在回路除了可以采用拓扑排序方法外,还可以采用。
A. 求关键路径的方法
B. 求最短路径的Dijkstra算法
C. 广度优先算法
D. 深度优先算法
15. 一个长度为12的有序表R[0..11],按二分法查找时,在表内各元素等概率情况下查找成功所需的平均比较次数是。
A. 35/12
B. 37/12
C. 39/12
D. 43/12
16. 二叉排序树是。
A. 每一分支结点的度均等于2的树
B. 中序遍历得到升序序列的树
C. 按从左到右顺序编号的树
D. 每一分支结点的值均小于左子树上的所有结点的值,又大于右子树上所有结点的值
的树
17. 以下关于B+树的叙述中,正确的个数是。
1)B+树是平衡的多叉树2)B+树可用于文件的索引结构
3)B+树能有效地支持顺序检索4)B+树能有效地支持随机检索
A. 1
B. 2
C. 3
D. 4
18. 散列(Hash)查找法的时间复杂度为。
A. O(1)
B. O(n)
C. O(log2n)
D. O(n2)
19. 设10000个无序元素,希望用最快的速度挑选出前10个最大的元素,是最合适的排序算法。
A. 快速排序
B.冒泡排序
C.直接插入排序
D.堆排序
20. 一组记录序列F={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}
二、问答题(共3小题,每小题10分,共30分)
1. 用关键字序列(46, 88, 45, 39, 70, 58, 101, 10, 66, 34)建一棵二叉排序树。
(1)画出该二叉排序树。
(2)求在等概率条件下的查找成功和不成功的平均查找长度。
2. 如下图所示,顶点表示村庄,有向边代表交通路线,若要建立一家医院,试问建立在哪一个村庄总体交通代价最小?请给出所采用的算法和主要的解题过程。
图1 一个有向图
3. 已知待排序的关键字序列为(503, 87, 512, 61, 908, 170, 897, 275, 653, 462),试完成下列各题:
(1) 根据以上序列建一个堆(画出第一步和建成堆后的图),希望先输出最小值。
(2) 输出最小值后,如何得到次小值?(请画出对应的结果图)。
三、算法设计题(共3小题,每小题10分,共30分)
1.对单链表中元素按直接插入方法进行排序,算法的C语言描述如下,其中L为指向链表头结点的指针。请在空白处填入合适的代码,以完成排序功能。
typedef struct node{
int data;
struct node *next;
} Linknode, *Link;
void InsertSort( Link L){
link p, q, r, u;
p = L->next; (1) ;
while( (2) ){
r = L; q = L->next;
while( (3) && q->data <= p->data) {
r = q; q = q->next;
}
u = p->next; (4) ; (5) ; p = u;
}
}