某数据结构课程教学设计公园导游图.doc

收藏

编号:2611337    类型:共享资源    大小:29.02KB    格式:DOC    上传时间:2020-04-24
8
金币
关 键 词:
数据结构 课程 教学 设计 公园 导游
资源描述:
^` 实验四:图(内容:某公园导游图) 一、问题描述: 公园导游系统:给出一张某公园的导游图,游客通过终端询问可知︰从某一景到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。 二、设计描述: 1.输入导游图的算法(存储方法).本程序特地设计函数void initgraph()用于实现键盘输入图的结构; 2.可访问导游图中任一景点的算法.为此设计了函数void vist(GraphMatrix graph)用于实现访问任一景点的信息; 3.最短路径从一景点到另一景点的算法。利用floyd算法-实现每一对景点间的最短路径。 并利用void outgraph()函数实现显示起始点和终点间的最短路径和其长度; 三、程序清单: #include using namespace std; #include #define MAXVEX 100 #define MAX 999 typedef char VexType; typedef float AdjType; typedef struct //定义图结构 { int n; /* 图的顶点个数 */ VexType vexs[MAXVEX]; /* 顶点信息 */ AdjType arcs[MAXVEX][MAXVEX]; /* 边信息 */ } GraphMatrix; GraphMatrix graph; //定义一个图graph typedef struct //定义最短路径ShortPath结构 { AdjType a[MAXVEX][MAXVEX]; /* 关系矩阵A,存放每对顶点间最短路径长度 */ int nextvex[MAXVEX][MAXVEX]; /* nextvex[i][j]存放vi到vj最短路径上vi的后继顶点的下标值 */ } ShortPath; ShortPath path; //定义路径path void floyd(GraphMatrix * pgraph, ShortPath * ppath) //floyd算法-用于实现每一对景点间的最短路径 { int i, j, k; for (i = 0; i < pgraph->n; i++) for (j = 0; j < pgraph->n; j++) { if (pgraph->arcs[i][j] != MAX) ppath->nextvex[i][j] = j; else ppath->nextvex[i][j] = -1; ppath->a[i][j] = pgraph->arcs[i][j]; } for (k = 0; k < pgraph->n; k++) for (i = 0; i < pgraph->n; i++) for (j = 0; j < pgraph->n; j++) { if ( ppath->a[i][k] >= MAX || ppath->a[k][j] >= MAX ) continue; if ( ppath->a[i][j] > ppath->a[i][k]+ ppath->a[k][j] ) { ppath->a[i][j] = ppath->a[i][k] + ppath->a[k][j]; ppath->nextvex[i][j] = ppath->nextvex[i][k]; } } } void outgraph() //out()函数用于实现显示起始点和终点间的最短路径和其长度 { int c,b,i; cout<>c; cin>>b; i=path.a[c][b]; //通过path.a[c][b]把路径长度赋给i cout<<"该路径总长为:"; cout<>graph.vexs[i]; } printf("请输入公园的邻接矩阵的信息\n");//循环输入图的邻接矩阵信息(也就是输入一个二维数组) for(i=0;i>graph.arcs[i][j]; } } void vist(GraphMatrix graph) //函数用于实现访问任一景点的信息 { int i; cout<>i; cout<>a; return a; } int main() { int i,j; initgraph(); //initgraph()函数来实现键盘输入图的结构 floyd(&graph, &path); cout<<"为了验证下面运算结果的方便,循环输出nextvex[i][j]数组"; for (i = 0; i < graph.n; i++) { for (j = 0; j < graph.n; j++) //为了验证下面运算结果的方便,循环输出nextvex[i][j]数组 printf("%d ", path.nextvex[i][j]); //nextvex[i][j]存放vi到vj最短路径上vi的后继顶点的下标值 putchar(\n); } cout<
展开阅读全文
提示  淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:某数据结构课程教学设计公园导游图.doc
链接地址:https://www.taowenge.com/p-2611337.html
关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

收起
展开