天大《数据结构》2017年12月考试期末大作业

谋学网www.mouxue.com

数据结构

要求: 一、

独立完成,下面五组题目中,请任选其中一组题目作答,满分100分;

二、答题步骤:

1. 使用A4纸打印学院指定答题纸(答题纸请详见附件);

2. 在答题纸上使用黑色水笔按题目要求手写作答;答题纸上全部信息要求手......写,包括中心、学号、姓名、科目、答题组数等基本信息和答题内容,请写明题型、题号;

三、提交方式:请将作答完成后的整页答题纸以图片形式依次粘贴在一个 .......Word....文档中上传(只粘贴部分内容的图片不给分),图片请保持正向、清晰; ...

1. 上传文件命名为“中心-学号-姓名-科目.doc” 2. 文件容量大小:不得超过20MB。

提示:未按要求作答题目的作业及雷同作业,成绩以分记! ....................0...

题目如下: 第一组:

一、编程题(每小题30分,共60分)

(一)

对于二维整数数组A[m][n],对下列三种情况,分别编写相应的函数。 1. 求数组所有边缘元素的数值和。

int sum1(int A[M][N],int m ,int n) {

2.求从A[0][0]开始的互不相邻的所有元素的和

注:一个元素的八个方向上的第一个元素均为相邻元素。 int sum2 (int A[M][N] , int m , int n) {

3. 假定m=n,并为偶数,请分别计算正、反两条对角线上的元素值之和。

int sum3(int A[M][N] , int n) {

(二)

已知某哈希表的装载因子小于1,哈希函数H(key)为关键字(标识符)的第一个字母在字母

谋学网www.mouxue.com

表中的序号,处理冲突的方法为线性探测开放定址法。试编写一个按第一个字母的顺序输出哈希表中所有关键字的算法。

二、解答题(20分)

(一)

设待排序记录的关键字序列为{46, 55, 13, 42, 94, 05, 17, 70}写出其第一趟快速排序过程。(要求写出每次交换后的序列,并且枢轴记录到位也算一次交换)

初始关键字: 46 55 13 42 94 05 17 70 1次交换后: 2次交换后: 3次交换后: 4次交换后: 5次交换后:

三、画图题(20分)

(一)

已知二维数组表示的图的邻接矩阵如下图所示。试分别画出自顶点1出发进行遍历所得的深度优先生成树和广度优先生成树。

第二组:

一、编程题(每小题30分,共60分)

(一) 设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L仍是一个有序表。

谋学网www.mouxue.com

(二) 用标准C语言实现Hanoi塔问题

二、解答题(20分)

(一)

对下面的带权无向图采用prim算法从顶点①开始构造最小生成树。(写出加入生成树顶点集合S和选择Edge的顺序)

① 9 10 ② 7 ③ 5 6 7 ④ ⑤ ⑥

11 8

S: 顶点号 ① ① ① ① ① ①

Edge: (顶点,顶点,权值) (,,) (,,) (,,) (,,) (,,)

三、画图题(20分)

(一)

将给定的图简化为最小的生成树,要求从顶点1出发。

1 5 8 3 3 15 2 12 5 10 4 7 6

2 9 7 6 谋学网www.mouxue.com

第三组:

一、编程题(每小题30分,共60分)

(一)

1.设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表 中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。 2. 设计在链式存储结构上交换二叉树中所有结点左右子树的算法。 (二)

1.设有一组初始记录关键字序列(K1,K2,?,Kn),要求设计一个算法能够在O(n)的时间 复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于Ki,右半部分的每个关键字均大于等于Ki。

2. 设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链

式存储结构表示。

二、解答题(20分)

(一)

谋学网www.mouxue.com

若二叉树中各结点的值均不相同,则由二叉树的前序序列和中序序列,或由其后序序列和中序序列均能唯一地确定一棵二叉树,但由前序序列和后序序列却不一定能唯一地确定一棵二叉树。

(1)已知一棵二叉树的前序序列和中序序列分别为ABDGHCEFI和GDHBAECIF,请画出此二叉树。

(2)已知一棵二叉树的在序序列和后序序列分别为BDCEAFHG和DECBHGFA,请画出此二叉树。 (3)已知一棵二叉树的前序序列和后序序列分别为AB和BA,请画出这两棵不同的二叉树。

三、画图题(20分)

(一)

某子系统在通信联络中只可能出现8种字符,其出现的概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11试设计赫夫曼编码 1 0

0 1 0 1

23 29 0 0 1 1 11 1 14 0 0 1

7 8 5 3

第四组:

一、编程题(每小题30分,共60分)

(一)

对于二维整数数组A[m][n],对下列三种情况,分别编写相应的函数。 1. 求数组所有边缘元素的数值和。

int sum1(int A[M][N],int m ,int n) {

2.求从A[0][0]开始的互不相邻的所有元素的和

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4