ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:97.43KB ,
资源ID:27159080      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27159080.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验报告交通指南.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验报告交通指南.docx

1、数据结构实验报告交通指南数据结构课程实验报告班级:计嵌141:志远学号:1413052023交通指南系统1.问题描述 假设以一个带权有向图表示某一区域的公交线路图,图中顶点代表一些区域中的重要站点,弧代表已有的公交线路,弧上的权表示该线路上的票价(或搭乘所需时间),试设计一个交通指南系统,指导前来咨询者以最低的票价或最少的时间从区域中的某一站点到达另一站点。 2.基本要求 (1)设计结点和图的存储结构; (2)设计任意两点最短路径方法; (3)输入:图的相关信息以建立公交线路网,以及公交线路网咨询的任意两个站点; (4)输出:两个站点间一条最短的简单路径。 3.实现提示 (1)结点和图的存储结

2、构 typedef struct node int no; float wgt; struct node*next; edgenode; typedef struct char vtx; edgenode*link; vexnode; typedef vexnode Graphn; void Floyd(Graph G,float Ann,int pnn) int i,j,k; for(i=0;in;i+) fot(j=0;jn;j+) Aij=Gij; Pij=-1; for(k=0;kn;k+) for(i=0;in;i+) for(j=0;jn;j+) if(Aik+AkjAij) pi

3、j=k; Aij=Aik+Akj; (2)算法提示 采用任意两点最短路径的相关算法。 4.源代码#include using namespace std;struct ArcCell int adj; /存放弧长 bool *info; /是否用过该弧;struct _MGraph char vexs20; /存放站点 ArcCell arcs2020; / int vexnum; int arcnum;typedef int Path202020; typedef int Distanc2020; class MGraph /没用私有成员 public: _MGraph mgraph;/ v

4、oid DestroyGraph(); /析构函数销毁图 int LocateVex (char u); / 返回顶点在图中的位置 bool CreateDN(); /构造有向网 void ShortestPath_FLOYD(Path &P,Distanc &D);bool MGraph:CreateDN()/构造有向网 int i,j ,w; char v1, v2; coutmgraph.vexnummgraph.arcnum ; coutn请输入各站点名: ; for(i = 0;imgraph.vexsi; for(i = 0;imgraph.vexnum;i+) /初始化邻接矩阵

5、for(j = 0;jmgraph.vexnum;j+) if(i=j) mgraph.arcsij.adj = 0; else mgraph.arcsij.adj = 20000; /infinity; mgraph.arcsij.info = false; for(i = 0;imgraph.arcnum;i+) /构造邻接矩阵 coutv1v2w; int m = LocateVex(v1); int n = LocateVex(v2); mgraph.arcsmn.adj = w; / 的权值 return true; void MGraph:DestroyGraph() for(in

6、t i = 0 ;imgraph.vexnum;i+) for(int j = 0;jmgraph.vexnum;j+) if(mgraph.arcsij.info) delete mgraph.arcsij.info; mgraph.arcsij.info = false; mgraph.vexnum = 0; mgraph.arcnum = 0;int MGraph:LocateVex(char u) for(int i = 0 ;i20;i+) if(u = mgraph.vexsi) return i; return -1;void MGraph:ShortestPath_FLOYD(

7、Path &P,Distanc &D)/求每对顶点间的最短路径/ 用Floyd算法求有向网G中各对顶点v和w之间的最短路径Pvw及其带权长度Dvw/ 若Pvwu为TRUE,则u是从v到w当前求得最短路径上的顶点。 int u,v,w,i; for(v = 0;vmgraph.vexnum;v+) for(w = 0;wmgraph.vexnum;w+) Dvw = mgraph.arcsvw.adj;/ 顶点v到顶点w的直接距离 for(u = 0;umgraph.vexnum;u+) Pvwu = false; /路径矩阵初值 if(Dvw20000) /从v到w有直接路径 Pvwv = P

8、vww = true;/由v到w的路径经过v和w两点 for(u = 0;umgraph.vexnum;u+) for(v = 0;vmgraph.vexnum;v+) for(w = 0;wmgraph.vexnum;w+) if(Dvu+DuwDvw) /从v经u到w的一条路径更短 Dvw = Dvu+Duw;/ 更新最短距离 for(i = 0;imgraph.vexnum;i+) Pvwi = Pvui|Puwi;/从v到w的路径经过从v到u和从u到w的所有路径 void main() MGraph g; Path p; / 3维数组 Distanc d; / 2维数组 int s,t

9、,k; char v1,v2; float sum=0; coutn*欢迎使用交通指南系统*nendl; g.CreateDN();coutv1v2; s=g.LocateVex (v1); t=g.LocateVex (v2); g.ShortestPath_FLOYD(p,d); if(s!=t) int a=s; coutn由站点g.mgraph.vexss到站点g.mgraph.vexst途中经过站点:; for(k = 0;kg.mgraph.vexnum;k+) if(pstk = 1) coutg.mgraph.vexsk ; sum=sum+g.mgraph.arcsak.adj; a=k; cout最短时间:sum分钟; coutnn*感您的使用!*endl; coutnn*祝您旅途愉快!*endl; g.DestroyGraph();5.实现

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1