数据结构实验图.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验7:图的应用 一、 实验目的 图是应用极为广泛的数据结构,也是这门课程的重点,继续使学生更了解数据结构加操 作的程序设计观点。 二、 问题描述 给岀一张某公园的导游图,游客通过终端询问可知: a) 从某一景点到另一个景点的最短路径。 b) 游客从公园大门进入,选一条最佳路线,使游客可以不重复的游览各景点,最后回 到岀口。 三、 实验要求 1、 将导游图看作一张带权无向图,顶点表示公恫的各个景点,边表示各景点之间的道 路,边上的权值表示距离,选择适当的数据结构。 2、 为游客提供图中任意景点相关信息的查询: 1、 为游客提供任意两个景点之间的一条最短的简单路径。 2、 为游客选择最佳游览路径。 四、 实验环境 PC微机 DOS操作系统或Windows操作系统 Turbo C程序集成环境或Visual C++程序集成环境 五、 实验步骤 1、 设计公园平而图,图中顶点表示公园的各个景点,存放名称、代号、简介等信息; 边表示各景点之间的道路,边上的权值表示距离,选择适当的数据结构: 2、 设计图的最短路径算法,如果有几条路径长度相同,选择途径景点较少的路径给游 客; 3、 设计图的深度优先搜索算法,如果有多种路径可选,则选带权路径最短的路线给游 客; 4、 选择适当语言实现算法: 3、调试程序。 六、测试数据 可根据实际情况指泄。测试数据见南昌大学平而示意图。 七、实验报告要求 1、 问题描述: 该程序包扩以下内容: (1) 设计学校的校园平而图,所含景点为9个。 (2) 以图中顶点表示校内各景点,存放景点冬称、代号、间介等信息;以边表示 路径,存放路径长度等相关信息。 (3) 为来访客人提供图中任意景点相关信息的査询。 (4) 提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径。 (5>提供途中任意景点问路查询,即求任意两个景点间的所有路径。 (6)提供校恫图中多个景点的最佳访问路线查询,即求途经这多个景点的最佳(短) 路径。 设讣思路:对系统功能抽象,分析问题描述。首先,平而图用输岀模拟:存储景点 信息采用结构体;对各景点用字母代替,字母组成图,通过对图的操作, 狄克斯特拉算法求出指定最短路径及一点到其它所有点的最短路径,递 归进行图的遍历求两点所有路径。由此可实现以上所有功能。 2、 图的建立 图的建立:这是一个无向带权图,实际上无向带权图与有向带权图相似,采用邻接 矩阵存储比较方便。邻接矩阵的结点结构体如下: typedef struct { int edges[MAXV][MAXV]; int n; } MGraph: 其赋值如下: g.edges[i][j]=0; g.edges[9][1]=g.edges[1][0]=100; g.edges[0][2]=g.edges[2][0]=508; g.edges[0][6]=g.edges[6][0]=208; g.edges[0][7]=g.edges[7][0]=358; g.edges[2][3]=g.edges[3][2]=158; g.edges[3][5]=g.edges[5][3]=258; g.edges[4][5]=g.edges[5][4]=208; g-edges[4][8]=g.edges[8][4]=80O; g.edges[5][7]=g.edges[7][5]=608; g.edges[6][7]=g.edges[7][6]=400; g.edges[7][8]=g.edges[8][7]=30O; 、■ 3、 图的最短路径算法 算法思想:设置两个结点集合S和T,集合S中存放已找到的最短路径的结点,集 合T中存放当前还没找到的最短路径的结点。初始状态时,集合S中只包含源点, 没为vO,然后不断的从集合T中选择到源点vO的路径长度最短的结点u加入到集 合S中,集合S中每加入一新的结点u,都要修改源点vO到集合T中剩余结点的 当前最短路径长度值,集合T中各点的新的当前最短路径长度值为原来的当前最短 路径长度值,与结点U的最短路径长度值加上结点U到该结点的路径长度值(即为 从源点结点U到达该结点的路径长度)中的较小者。此过程不断重复,直到集合T 中的对号点全部加到集合S中为止。 算法实现如下: void Dijkstra(MGraph g,int v, int to) D游泳馆 -0??…\街-勢:::叭200-400O250咻肓馆150 0 D游泳馆 -0??… \ 街- 勢:::叭 200- 400 O 250 咻肓馆 150 0 \ \ \ \F教学主楼 -O G正气广场 O / ^--200 400 H图书馆 A学校一舌 O \ \ 100 — 欢迎使用南昌大学导游帮助小程序 信径 点路 景有 个荐所 找线景 杳路

文档评论(0)

kunpeng1241 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档