网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构校园导航程序设计.doc

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

一、设计题目: 实验题目: 设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。校园导航 本课题实现校园多个场所(至少10个)的最短路径求解。 (1) 输入的形式和输入值的范围:本系统主要数据类型为字符型和整形,字符型主要包括地点编号,地点名称,地点简介,功能编号;输入功能编号与单位编号进行操作。 (2) 输出的形式:输出则通过已有的信息数据,通过相关的操作输出相应信息。 (3) 程序所能达到的功能:可以为学生或旅客了解我校大概地点位置以及路径, 主要功能:1.浏览校园地点及简介; 2.查看所有游览路线; 3.选择出发点和目的地求出最佳路径; 4.查看某一单位信息。 (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 a.首先看到的是校园导航 b.查看浏览路线等待输入起始地点: C.选择出发点与目的地等待输入起始地点与目的地编号(中间用空格隔开): d.参看地点信息等待输入地点编号: 三、概要设计 本系统包含菜单(menu),显示信息(show),弗洛伊德算法(floyd),迪杰斯特拉算法(shotpath_dj),查找地点信息等程序段(search)。主程序为整系统的入口处,菜单主要实现显示系统功能,显示信息主要实现显示地点信息,弗洛伊德算法主要实现求两地点之间最短路径,迪杰斯特拉算法实现找两地点之间所有路径,查找地点信息主要实现显示某一地点信息。 系统首先通过主程序调用void main( );进入系统主菜单函数,根据用户的选择可分别进入:1.浏览各地点及简介; 2.查看所有游览路径; 3.选择出发点和目的地求出最短路径; 4.查看地点信息; 5.退出系统。 选择“1”项,显示十个地点的有关信息,包括地点编号,地点名称,地点简介。 选择“2”项,会进入输入起始地点编号的界面,输入正确编号后会显示起始地点到其余九个地点的所有路径。 选择“3”项,会进入输入起始地点与目的地点的界面,输入起始地 点与目的地点,并有空格隔开就得到两地点之间的最短路径。 选择“4”项,会进入输入要查看的地点的界面,输入地点编号后会显示该地点的有关信息。 选择“5”项,就会退出程序。 下图为程序总框架图,表示函数之间的函数关系: 系统详细设计 (1)十个校园地点图: 0:正大门 1:南三栋 2:西区篮球场 3:食堂 4:教三栋 5:图书馆 6:北区食堂 7:医务室 8:软件楼 9:北门 (2)主程序流程图: (3)迪结斯特拉算法实现的顶点V1到其他顶点的最短路径: void ShortPath_Dj(MGraph * G) { int v,w,i,min,t=0,x,flag=1,v0; int final[20], D[20], p[20][20]; cout编号 地点名称 简介 endl; for(v=0;vG-vexnum;v++) coutG-vexs[v].numG-vexs[v].name G-vexs[v].introductionendl; while(flag) { cout请输入一个起始地点编号:; cinv0; if(v00||v0G-vexnum) { cout地点编号不存在!请重新输入地点编号:; cinv0; } if(v0=0v0G-vexnum) flag=0; } for(v=0;vG-vexnum;v++) { final[v]=0; D[v]=G-arcs[v0][v].adj; for(w=0;wG-vexnum;w++) p[v][w]=0; if(D[v]infinity) { p[v][v0]=1;p[v][v]=1; } } D[v0]=0;final[v0]=1; for(i=1;iG-vexnum;i++) { min=infinity; for(w=0;wG-vexnum;w++) if(!final[w]) if(D[w]min){v=w;min=D[w];} final[v]=1; for(w=0;wG-vexnum;w++) if(!final[w](min+G-arcs[v][w].adjD[w])) { D[w]=min+G-arcs[v][w].adj; for(x=0;xG-vexnum;x++)

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档