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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构算法实验8图的最短路径问题附源代码Word下载.docx

1、 /权值的无穷大表示typedef int adjmatrixMaxVertexNumMaxVertexNum; /邻接矩阵 typedef struct Node int adjvex; struct Node *next; edgenode; /路径结点【函数说明】 void InitMatrix(adjmatrix &G)功能:初始化邻接矩阵表示的有向带权图思路:将邻接矩阵中的所有权值设置为无穷大(MaxValue) void CreateMatrix(adjmatrix &G, int n)建立邻接矩阵表示的有向带权图(即通过输入图的每条边建立图的邻接矩阵)按照输入的顶点信息和权值信息

2、,更新邻接矩阵内对应的值 void PrintMatrix(adjmatrix G, int n)输出邻接矩阵表示的有向带权图 (即输出图的每条边)按照一定的格式输出邻接矩阵 void Dijkstra( adjmatrix GA, int dist, edgenode *path, int i, int n)求最短路径的DijKstra算法函数按照从源点到其余每一顶点的最短路径长度递增的次序依次求出从源点到每个顶点的最短路径及长度。设立一个集合S,用以保存已求得最短路径的终点,其初值为只有一个元素,即源点;一个数组 distn,其每个分量 distj 保存从源点经过S集合中顶点最后到达顶点

3、j 的路径中最短路径的长度,其初值为从源点到每个终点的弧的权值(没弧则置为);一个指针数组pathn,pathj指向一个单链表,保存相应于distj的从源点到顶点 j 的最短路径(即顶点序列),初值为空。 void PATH(edgenode *path, int i, int j)将pathi的路径改为pathj的路径+i分为三个步骤:一,删除pathi中原来保存的链表;二,将pathj的路径复制给pathi;三,将j结点加入pathi的路径中 void PrintPath(int dist, edgenode *path, int n)打印输出从源点到每个顶点的最短路径及长度的函数按照一定

4、的格式遍历输出从源点到每个顶点的最短路径及长度四. 实验结果与分析包括运行结果截图等 【测试数据】顶点数:7输入弧的信息:尾顶点头顶点权值183524106159正确的邻接矩阵应为:下面以测试数据为基准,给出DijKstra算法生成最短路径的状态变化图:(注:顶点旁边的代表当前状态下从源点到该顶点的最短路径长度)【状态】 【状态】 【状态】 【状态】 【状态】 【状态】 【状态(最短路径)】五. 心得体会记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。【附录-源程序】Test9_2.cpp#includestdlib.hiostream.hstring.h#includ

5、eGraph2.hvoid main() int n; adjmatrix G; edgenode *pathMaxVertexNum; int distMaxVertexNum; void Dijkstra( adjmatrix GA, int dist, edgenode *path, int i, int n); void PrintPath(int dist, edgenode *path, int n); InitMatrix(G); printf(输入要构造的图顶点数n); scanf(%d,&n); CreateMatrix(G,n); PrintMatrix(G,n); /打印

6、图的邻接矩阵 coutendl*以下为DijKstra算法部分*endl; Dijkstra(G, dist, path, 0, n); PrintPath(dist,path,n);/求最短路径的DijKstra算法函数void Dijkstra( adjmatrix GA, int dist, edgenode *path, int i, int n) int j,k; int v = 1,minIndex; void PATH(edgenode *path, int i, int j); bool *isStepped; /初始化部分 /isStepped:申请n个空间,除i以外均为fa

7、lse /dist:邻接矩阵中i顶点到各顶点的距离 /path:邻接矩阵中i顶点到各顶点若有路径,则保存;无路径置为NULL isStepped = new booln; for (j = 0; j adjvex = i;next = new edgenode;next-adjvex = j;next = NULL; else pathj = NULL; isSteppedj = false; isSteppedi = true; while(v = n) /尝试查找当前最小路径结点,用minIndex保存顶点 minIndex = i; for (k = 0; k k+) if (distk

8、 distminIndex & (!isSteppedk) minIndex = k; /有查找到最小路径顶点,则将其并入集合 if (minIndex != i) isSteppedminIndex = true; /未查找到,则说明路径都为,退出 else break; /通过while中确定的最小路径顶点(minIndex)到达当前顶点 /若路径长度小于dist中保存的路径长度,则修改 if (GAminIndexk + distminIndex next; delete pathi; pathi = p; /将pathj的路径复制给pathi p = new edgenode; p-a

9、djvex = pathj-adjvex; pathi = p; t = pathj- while (t ! q = p; p = new edgenode; p-adjvex = t- q-next = p; t = t- /将j结点加入pathi的路径中 q = p; q-/打印输出从源点到每个顶点的最短路径及长度的函数void PrintPath(int dist, edgenode *path, int n) int i; edgenode *p; for (i = 1; i i+) cout vi 最短路径:; p = pathi; if (p = NULL) coutadjvex最

10、短长度:disti Graph2.h/初始化邻接矩阵表示的有向带权图void InitMatrix(adjmatrix & int i,j; for (i=0; iMaxVertexNum; i+) /邻接矩阵初始化 for (j=0; j头顶点名,权值 输入数据,以0-0,0结尾:如A-B,23 n while(true) /构造邻接矩阵%d-%d,%dv,&w,&q); /输入弧的两个定点及该弧的权重 getchar(); if (v = 0 & w = 0 ) break; if( v = n | w = n) cerrvertex ERROR!exit(1); Gvw=q;/输出邻接矩阵表示的有向带权图 (即输出图的每条边)void PrintMatrix(adjmatrix G, int n)-Your Graph is:n; i+) j+) if(Gij!=MaxValue) printf( %2d | ,Gij); else printf( | n

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

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