数据结构课程设计最短路径.pdfVIP

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

数据结构课程设计

题目名称:最短路径

计算机科学与技术学院

一、需求分析

(1)题目:最短路径

实现图的输入,选择合适的结构表示图,在此基础上实现求解最

短路径的算法,可以从任意一点求最短路径,学生必须准备多组测试

数据,并设计清晰易懂的输入输出界面,

要求:如何用多种数据结构来求解问题。同时要求实现对应数据

结构的所有基本操作。

(2)程序的输入与输出:要求用多种数据结构求解问题,也就是要用

邻接表与邻接矩阵实现最短路径的算法,需要有多组输入输出,

(a)输入的形式和输入值的范围:输入的形式为整型

1.先输入共需要创建几次图

2.再分别输入边数和顶点数(范围:1~100)

3.输入1和2选择是否为有向图图(1为有向,2为无向)

4.对应每条边输入起点和终点下标,以及对这条边的权值(最

大的权值为100)。

5.输入在邻接表的基础上输入深度与广度优先搜索的起点

6.我们输入求各种最短路径起点和终点

(b)输出的形式;

1.输出所建立的邻接表(表结点后面的括号是头结点与表结

点的权值)

2.输出DFS和BFS的结果

3.输出该图不带权值的最短路径与路径

4.接下来输入起点和终点,求带权值的最短路径也就是

Dijstra算法,输出长度并给出路径

5.前面都是用邻接表实现的各种算法,接下来的Floyd算法

就用矩阵实现,于是直接邻接表转矩阵输出

6.用Floyd算法求出图的多源最短路径,给出起点终点输出

最短路径长度,接着便到了第二次创建图,直至循环结束。

(3)程序的功能:

求给出带权图的任意两点,输出最短路径长度并给出其最短路径

所经过的顶点。

在实际应用中可以将交通网络化成带权的图,图中顶点表示城市,

边代表城市之间的公路,边上的权值表示公路的长度。这样可以发现

两个地方之间有无公路可连,在几条公路可通的情况下,可以找到那

条路径最短。也就是现在地图app中的功能。

(4)测试数据:包括正确的输入及其输出结果和含有错误的输入

及其输出结果。

在有向图中输入错误的数据(顶点与顶点方向相反),会输出逆向信息。

二、概要设计

1.主程序流程

(a)主程序首先多组输入一个n,在n不为0的前提下循环执行

(b)调用BuildGraph()函数,创建一个图并以邻接表的形式存

(c)BuildGraph()函数输入顶点、边数调用CreateGraph(Nv)

函数,初始化一个有Nv个顶点但没有边的图,再根据结构体Edge输

入每个边的信息,调用InsertEdge(Graph,E,c);函数将每条边

插入到仅仅初始化的图中,完成一个图的建立,并返回一个邻接表类

型的结构体

(d)主函数接到返回来的邻接表结构体,调用outL()函数,输出

这个邻接表

(e)输入起点,调用DFS(Graph,v1,1);函数进行递归求解深度

优先搜索并直接输出

(f)输入起点,调用BFS(Graph,v1);函数,求解广度优先搜索

并直接输出

(g)输入起点、终点,调用Unweighted(Graph,v1);函数求

得起点到每个点的最短路径,再用dist[v2]输出。

(h)如果dist[v2]大于0证明v1可以到达v2,调用outpath(v2)

输出路径

(i)输入起点、终点,调用Dijkstra(Graph,v1);函数求得起点

到每个点的最短路径,再用dist[v2]输出。

文档评论(0)

187****3083 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档