朱颢东2015-2016学年第二学期《数据结构》实验指导书(修订版)-1(7)

2019-02-15 18:35

实验08 最小生成树、拓扑排序和最短路径

实验学时:2学时 实验类型:上机

背景知识:图的存储、遍历及其应用。 目的要求:

掌握图的常见应用算法的思想及其程序实现。

实验内容:

(1)键盘输入数据,分别建立一个有向图的邻接表和一个无向图的邻接矩阵。 (2)输出该邻接表和邻接矩阵。

(3)以有向图的邻接表为基础输出它的拓扑排序序列。 (4)以无向图的邻接矩阵为基础实现最小生成树的PRIM算法。

(5)以有向图的邻接矩阵为基础实现Dijkstra算法输出单源点到其它顶点的最短路径。 (6)在主函数中设计一个简单的菜单,分别调试上述算法。 (7)*综合训练:校园导航 1)问题描述:

在给出校园各主要建筑的名称信息及有路线连通的建筑之间的距离(或行进时间)的基础上,利用校园导航系统计算出给定的起点到终点之间距离最近(或行进时间最短)的行进路线。

2)设计要求:文件读入或键盘方式读入校园主要建筑信息及建筑间的距离(或行进时间)信息。创建完地图后,以文件形式保存,以免重复创建。计算出给定的起点到终点之间距离最近(或行进时间最短)的行进路线,并输出该路线(包括经过哪些建筑)及其总距离(或总行进时间)。 实验说明: 1.类型定义

邻接表存储见实验07 邻接矩阵存储示例

#define MAX_VERTEX_NUM 20 //顶点最大个数 typedef enum {DG, DN, UDG, UDN} GraphKind;

typedef struct ArcCell{

VRType adj;

int weight; //边的权值

}ArcCell; AdjMatrix[MAX_VERTEX_NUM] [MAX_VERTEX_NUM]; typedef struct{

31

VertexType vexs[MAX_VERTEX_NUM]; AdjMatrix arcs;

int vexnum, arcnum; //顶点的实际数,边的实际数 GraphKind kind; }MGraph;

注意问题:

注意理解各算法实现时所采用的存储结构。

32

实验09 二叉排序树的基本操作

实验学时:2学时

实验类型:上机

背景知识:树表查找。 目的要求:

掌握二叉排序树、AVL树的查找、插入、删除、建立算法的思想及程序实现。 实验内容:

(1) 随机产生一组关键字,利用二叉排序树的插入算法建立二叉排序树,然后删除某一指

定关键字元素。

(2) * 建立AVL树并实现删除某一指定关键字元素。 (3) *综合训练: 树种统计

随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。首先输入正整数N(≤105),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(不区分大小写)。按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,每种树的信息占一行。 实验说明: 1.存储定义

参见实验05二叉链表的存储。

2.各种关键字数据输入可利用随机函数自动产生,以便节省上机时间。 注意问题:

1.注意建立二叉排序树时相同元素的处理。

2.注意理解动态查找概念。

33

实验10 哈希表的生成

实验学时:2学时

实验类型:上机

背景知识:哈希查找。 目的要求:

掌握哈希存储结构的思想,能选择合适的哈希函数,实现不同冲突处理方法的哈希表的查找、建立。 实验内容:

(1)设计哈希函数及处理冲突的方法;

(2)键盘输入数据,利用设计的哈希函数及线性探测法生成哈希表; (3)用同样的输入数据和哈希函数,用链地址法处理冲突生成哈希表; (4)在主函数中设计一个简单的菜单,分别调试上述算法; (5)分析两种方法的平均查找长度。 (6)*综合训练:QQ帐户的申请与登陆

首先输入一个正整数N(≤105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6位、不超过16位、且不包含空格的字符串。

针对每条指令,给出相应的信息:

1)若新申请帐户成功,则输出“New: OK”;

2)若新申请的号码已经存在,则输出“ERROR: Exist”; 3)若老帐户登陆成功,则输出“Login: OK”;

4)若老帐户QQ号码不存在,则输出“ERROR: Not Exist”; 5)若老帐户密码错误,则输出“ERROR: Wrong PW”。 实验说明:

各种关键字数据输入可利用随机函数自动产生,以便节省上机时间。 注意问题:

1.注意建立哈希表时相同元素的处理。

2.注意理解哈希查找思想。

34

实验11 常用的内部排序算法

实验学时:2学时 实验类型:上机 背景知识:各种排序方法 目的要求:

1.掌握常见的内部排序算法的思想及其适用条件。 2.掌握常见的内部排序算法的程序实现。

实验内容:

输入一组关键字序列分别实现下列排序:

(1) 实现简单选择排序、直接插入排序和冒泡排序。 (2) 实现希尔排序算法。 (3) 实现快速排序算法。 (4) 实现堆排序算法。 (5) * 快速排序的非递归算法。 (6) * 实现折半插入排序。

(7) 在主函数中设计一个简单的菜单,分别测试上述算法。

(8) * 综合训练:采用几组不同数据测试各个排序算法的性能(比较次数和移动次数)。

实验说明:

1.类型定义

#define MAXSIZE 100 /*参加排序元素的最大个数*/ typedef int KeyType; typedef struct { KeyType key;

InfoType otherinfo; // 其他字段 }RedType; typedef struct {

RedType r[MAXSIZE+1];

int length; /*参加排序元素的实际个数*/ }SqList;

2.算法5可以借助栈实现。

注意问题:

35


朱颢东2015-2016学年第二学期《数据结构》实验指导书(修订版)-1(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:郑东新区招商引资炼成“兵法”大揭秘!

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: