C语言-校园导游图.pdfVIP

  • 47
  • 0
  • 约2.33万字
  • 约 19页
  • 2019-03-16 发布于广东
  • 举报
云南大学软件学院 数据结构实验报告 (本实验项目方案受 “教育部人才培养模式创新实验区 (X3108005)”项目资助) 实验难度: B □ 序号 学号 姓名 成绩 指导教师 (签名) 学 期: 2010秋季学期 任课教师: 实验题目: 图及其应用 小 组 长: 联系电话: 电子邮件: 完成提交时间: 2010年 12月27 日 1 Conceive 一、【实验构思 ( )】(10%) (本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设 计、算法等相关知识) 本次实验的主要目的在于熟悉图这种数据结构的表示和应用,学会运用图对实际问题 进行建模和设计,以便在实际问题背景下灵活运用图和抽象数据类型的基本操作。具体要 求如下:根据云南大学呈贡校区主要道路建筑示意图,测量出主要建筑 (教学楼、办公楼、 食堂、学生宿舍、运动场、乘车点等)之间的距离。以图为工具,建立模型,用户 (师生) 通过终端可询问:从某一建筑到另一建筑的最短路径,用户从校园某处 (由用户选定)进 入,选取一条最佳路线,使用户可以不重复地浏览各建筑,最后回到出口 (出口就在入口 旁边)。 基本思路:用无向网表示校区内的各建筑的平面图,图中顶点表示主要建筑,存放建 筑的编号、名称、简介等信息,图中的边表示建筑间的道路,存放路径长度等信息。将导 游图看作一张带权无向图,顶点表示校园的各个建筑,边表示各建筑之间的道路,边上的 权值表示距离,为此图选择适当的数据结构。把各种路径都显示给用户,由用户自己选择 浏览路线。首先用指针数组存储景点信息,即图中顶点和边的信息。景点数据信息由程序 指定存储,然后采用迪杰斯特拉算法求出最短路径,即从人口出发,顺着某一条边开始循 环,每一次求得num 到某个顶点的最短路径,并将其加入到S集合置,求得一条通路。最 后调用子函数将路径结果和景点信息打印出来。 算法思想:首先构造一个无向图G并用邻接矩阵来存储,建立一个指针数组将图的信 息存储起来。然后利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数 组p[v][w]来记录,最短路径长度就用一维数组D[w]存放。即从人口出发,顺着某一条边 开始循环,每一次求得num 到某个顶点的最短路径,并将其加入到S集合置,求得一条通 路。根据起点和终点输出最短路径和路径长度,最后调用子函数将路径结果打印出来。对 于用户查询的景点信息,通过指针直接访问该图中的顶点,并将该顶点中存储的信息显示 出来。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明, 主程序模块与各子程序模块间的调用关系) 抽象数据类型: typedef struct ArcCell{ int adj; //相邻接的景点之间的距离 }ArcCell; //定义边的类型 typedef struct VertexType{ int number; //景点编号 char* sight; //景点名称 char* info; //景点描述 }VertexType; //定义顶点的类型 2 typedef struct{ VertexType vex[NUM]; //图中的顶点,即为景点 ArcCell arc[NUM][NUM]; //图中的边,即为景点间的距离 int vexnum,arcnum; //顶点数,边数 }MGraph; //定义图的类型 void main() //主函数,主要就是调用图的建立函数和路径求解函数等 char M

文档评论(0)

1亿VIP精品文档

相关文档