课程设计报告“导航路径规划”.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计报告“导航路径规划”

江汉大学 课程设计报告 课程名称: 数据结构 设计题目: 导航路径规划 院 (系): 数学与计算机科学学院 专 业: 数学与应用数学 班 级: 10级数学班 组 别:组长: 裴志威201008101127 组员: 李伟 201008101128 分 工:李伟负责编写函数Menu用来显示界面及选择操作;函数Browser用来显示城市名称和编号;函数InitGraph用来录入城市的具体信息 裴志威负责报告书整体规划及编写函数ShortestPath_DJJ用来算出一个城市到其他城市之间的最短路径,并可以看出总路程;函数Floyd用来算出出发点到目的地的最短路线并显示路费 目? 录 一 、 系统功能和结构 1.1 程序设计目的 给定全国公路网络系统(自定义,要求城市个数>=20),根据导航策略(时间最短,里程最短)给出路径规划。系统运行界面自行设计。 1.2 需求分析 城市之间的道路可以有高速公路、普通公路,对图中所有道路必须标识是高速还是普通公路。 两个城市之间可以有高速和普通公路同时存在,且各自里程数可以不同。 约定:两城市之间有高速则高速通行时间最短;全国高速收费标准统一(¥0.5元/km);普通公路不收费。 用户以人机对话方式输入旅行起始、终止城市名(或者代码),选择导航策略(缺省策略是里程最短),程序输出从起点到终点的路径,总路径长度和所需通行费用 任意两个城市之间的通行路径都是存在的(可以有多条)。 必须考虑某些城市之间只有一条道路(高速或者普通公路)的情况; 全国公路网络数据以文件方式输入,但系统可以实现对道路信息的编辑修改(增加、删除、修改道路属性(类型、里程数) 1.3?概要设计 1.3.1???主要数据结构描述 1最短路径(从某个源点到其余各个顶点的最短路径) void ShortestPath_DJJ(MGraph * G) { int v,w,i,min,t=0,x,flag=1; int final[30],D[30],p[30][30]; cout<<"编号 城市"<<endl; for(v=0;v<G->vexnum;v++) cout<<G->vexs[v].num<<" "<<G->vexs[v].name<<endl; cout<<"*****************************"<<endl;*/ while(flag) { cout<<"请输入一个起始点编号"; cin>>v0; if(v0<0||v0>G->vexnum) { cout<<"城市不在此列举的城市中!请重新输入起点编号:"; cin>>v0; } if(v0>=0&&v0<G->vexnum) flag=0; } for(v=0;v<G->vexnum;v++) { final[v]=0; D[v]=G->arcs[v0][v].adj;//从起始地点到其他城市的距离 for(w=0;w<G->vexnum;w++) p[v][w]=0;//设空路径 if(D[v]<INFINITY) { p[v][v0]=1; p[v][v]=1; } } D[v0]=0;//初始化 final[v0]=1;//v0属于最短路径的终点的集合 //开始循环,每次求的v0到某个v顶点的最短路径,并加v到集合中 for(i=1;i<G->vexnum;i++) { min=INFINITY; for(w=0;w<G->vexnum;w++) if(!final[w]) if(D[w]<min){v=w;min=D[w];} final[v]=1; for(w=0;w<G->vexnum;w++) if(!final[w]&&(min+G->arcs[v][w].adj<D[w])) { D[w]=min+G->arcs[v][w].adj; for(x=0;x<G->vexnum;x++) p[w][x]=p[v][x]; p[w][w]=1; } } for(v=0;v<G->vexnum;v++) { if(v0!=v)cout<<G->vexs[v0].name; for(w=0;w<G->vexnum;w++) {

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档