- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西安郵電學 计算机学院 学生姓名 高 丹 专业名称 计算计算机科学与技术技术专业 班 级 科11106 学号 指导教师 衡 衡 霞 时间 2012年12月15日 至
2012年12月21日
实验题目 延安市旅游导游系统
一、实验目的
1.加深对《数据结构》这一课程所学内容的进一步理解与巩固
2.通过完成课程设计,逐渐培养自己的编程能力;
3.培养给出题目后,构建框架,用计算机解决的能力;
4.通过调试程序积累调试C程序设计的经验;
二、实验内容
编写一个延安市旅游导游系统,其中有平面图,有景点列表,可以查询景点简介,也可以查询两个景点间的最短路径,中转次数最少路径以及所有路径,其中要用到数据结构中的图的部分的知识。
三、需求分析
1.开发系统功能描述
(1)菜单类函数
void MenuShow()主界面菜单函数
void MenuShow0()输出延安市旅游景点平面图
void MenuShow1()延安市简介
void MenuList()旅游景点列表
void S_Menu()查询菜单
(2)查询两点间最短路径.(权值最小)
Shortroad(MGraph *G)弗洛伊德法来查询两点间最短路径
(3)查询两点间所有路径
Depsearch(MGraph *G,int v,int w)
allroads(MGraph *G)
利用深度优先遍历图,递归的思想来完成所有路径的查找
(4).查询中转次数最少的路径
int IsEmpty(LinkQueue *Q)判断队是否为空函数
int InitQueue(LinkQueue *Q)初始化队列函数
int EnterQueue(LinkQueue *Q,int x)进队函数
int DeleteQueue(LinkQueue *Q,int *x)出队函数
int NextAdjVertex(MGraph *G,int w,int v)求当前顶点的前一个顶点函数
void BFS(MGraph *G,int vi,int vj)
void Reseach(MGraph *G) 广度优先遍历图,递归思想完成查询中转次数最少的功能
(5).确定顶点位置函数
int LocateVertex(MGraph * G, char v[])确定当前顶点所在矩阵位置函数
(6).查询景点简介函数
void Search_K (MGraph * G) 按景点名称查询
void Search_N (MGraph * G)按景点编号查询
(7).文件保存以及读出函数
int read_info(MGraph *G)文件保存函数
int save_info (MGraph * G)文件读出函数
(8).平面图的创建函数
MGraph * CreatUDN(MGraph *G)平面图创建函数,若们有文件,则重新建立文件并保存
(9).主函数
void main(void)
四、概要设计
1、方案设计
整个程序要实现的功能是导游功能,平面图如果文件里面有存储的话便从文件读出,如果没有存储便创建文件存储。
其中可以实现的功能为:按景点名称查询,按景点编号查询,查询两点间的所有路径,查询两点间的最短路径,查询两点间中转次数最少的路径。按景点名称查询和按景点编号查询在此不做赘述,重要介绍其他三种查询方式。
查询两点间所有路径:该查询方法应用的是深度优先遍历平面图的方法,其中定义两个数组,visit[]用来标记已遍历过的结点,path[]用来存储已找到景点的编号,利用递归的思想一层一层向下遍历,最后打印出path[]数组便可完成该功能。
查询两点间最短路径:该查询方法应用的是弗洛伊德算法,定义的两个二维数组D[][]和Q[][],其中Q数组是用来存储查询到最短路径的景点矩阵的,D数组是用来比较每两个景点之间的权值,每得到一个最小值便将D数组刷新一次,将最后结果存入Q数组。
查询两点间中转次数最少的路径:利用广度优先思想遍历平面图。其中应用的队列的知识。先将最后一个顶点入队,然后利用NextAdjVertex函数求它的上一个结点,利用递归思想一直找到最开始的一个结点。
景区图:
延安市主要景点平面图 ↑北 延安
文档评论(0)