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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

图中两个结点的最短路径的求解Word文档格式.docx

1、(2)初始图的结构;(3)向图中插入元素;(4)查找某元素在图顶点中的位置;(5)创建邻接表;(6)寻找寻找最短路径;(7)输出;4、本实验实现在图中找到两个顶点之间的最短路径。5、输入及输出示例:二 概要设计基本操作(1)、void InitGraph(MGraph *G)操作结果:初始图。(2)、void InsertGraph(MGraph *G,int i,VertexType e)初始条件:图G存在。将e插入到图中的第i个位置。(3)、 int Locate(MGraph G,VertexType v1) 找到V1在图中的位置。(4)、void CreateUND(MGraph *G

2、)用邻接矩阵和邻接表表示图(5)、void ShortestPath(MGraph G,int v0,int *p,int *D)寻找图G中顶点之间的最短路径(6)、void Pint(MGraph G)输出邻接矩阵。 三 详细设计1、每个模块:(1) 初始图void InitGraph(MGraph *G) /*初始图*/ int i,nu,mu; printf(n输入顶点的个数和(边)弧的个数:); scanf(%d%d,&nu,&mu); G-arcs=(ArcCell *)malloc(nu*sizeof(ArcCell *); for(i=0;iarcnum=mu; /*图的顶点数和

3、边数*/ (2)、将e插入到图中的第i个位置void InsertGraph(MGraph *G,int i,VertexType e) if(ivexnum) return; strcpy(G-vexsi.data,e.data); (3)、找到V1在图中的位置int Locate(MGraph G,VertexType v1) /*确定v1在图顶点中的位置*/ int i;G.vexnum;i+) if(strcmp(v1.data,G.vexsi.data)=0) return i; return -1;(4)、用邻接矩阵和邻接表表示图void CreateUND(MGraph *G)

4、/*采用数组(邻接矩阵)和邻接表表示无向图*/int i,j,k,*p,w; VertexType v1,v2; p=(int *)malloc(G-vexnum*sizeof(int);10;i+) pi=0;vexnum;+i) /*初始邻接表*/ for(j=0;j+j) arcsij.adj=ING; for(k=0;karcnum;+k) printf(n输入第 %d 条(边)弧相对的两个顶点值:n,k+1);%s%s,v1.data,v2.data); /*输入相邻的两个点值*/输入它们的权值: %dw); i=Locate(*G,v1);j=Locate(*G,v2); /*用i

5、 和j来确定它们的位置*/arcsij.adj=w; (5)、寻找图G中顶点之间的最短路径void ShortestPath(MGraph G,int v0,int *p,int *D)/*对顶点V0到其余顶点v的最短路径pv及其带权长度Dv若pvw为1,则w是从V0到W当前求得最短路径上的顶点,finalv为1,当且仅当v属于S,即已经求得从v0到v的最短路*/ int v,u,i,w,min; int *final; final=(int *)malloc(G.vexnum*sizeof(int); /*分配空间*/ for(v=0;v+v) finalv=0;Dv=G.arcsv0v.a

6、dj; /*初始化*/ for(w=0;w+w) pvw=0; /*设空路径*/ if(DvING)pvv0=1;pvv=1; /*v到v0有路径*/ Dv0=0;finalv0=1; /*初始化,V0顶点属于S集*/ for(i=1;i+) /*其余G.vexnum-1个顶点*/ min=ING; for(w=0;+w) /*求出矩阵这一行的最小值*/ if(!finalw) /*W顶点属于V-S中*/ if(Dwmin)v=w;min=Dw; finalv=1; /*离V0顶点最近的V加入S集*/+w) /*更新当前最短路径及距离*/finalw&(min+G.arcsvw.adjDw)

7、/*不是最小的,修改Dw,Pw*/ Dw=min+G.arcsvw.adj; for(u=0;uu+) pwu=pvu; pww=1; free(final);(6)、输出邻接矩阵void Pint(MGraph G) /*输出邻接矩阵*/int i,j; for(j=0;j+) if(G.arcsij.adj!=ING) printf(t%d,G.arcsij.adj); else if(i=j)printf(t0 else printf(t (7)、主函数void main() MGraph G; VertexType e; int i,j; int *p; int *D; InitGra

8、ph(&G); p=(int *)malloc(G.vexnum*sizeof(int *); pi=(int *)malloc(G.vexnum*sizeof(int); D=(int *)malloc(G.vexnum*sizeof(int);顶点值: n+i) /*给图顶点向量付值*/ scanf(%s,e.data);InsertGraph(&G,i,e); CreateUND(& /*构造图结构*/邻接矩阵为: Pint(G); /*输出邻接矩阵*/ ShortestPath(G,i,p,D); /*调用最短函数*/ for(j=0; if(i!=j) %s 到 %s 的最短路为 %

9、d n,G.vexsi.data,G.vexsj.data,Dj);nn getch();2、完整函数#includestdlib.hconio.hstring.h#define ING 9999typedef struct ArcCell int adj; /*顶点关系类型,用1表示相邻,0表示不相邻*/ArcCell,*AdjMatrix; /*邻接矩阵*/typedef struct type char data3; /*顶点值*/VertexType;typedef struct VertexType *vexs; /*顶点向量*/ AdjMatrix arcs; /*邻接矩阵*/ int vexnum,arcnum; /*图的顶点数和边数*/MGraph;五、实验总结这次数据结构课程设计的制作使我对数据结构和C语言的理解更加深刻,也使我认识到了自己很多不足之处。这次程序设计使我认识到,要做成编写一个完整的程序绝对不是一件简单的事情,不单要掌握基础知识更要勇于实践,不单要舍得花费时间更要用心去完成它。无论是编写程序还是完成现实生活中的其他事情,我们都必须按部就班地从点滴做起,逐步完成。不但要完成更要做到尽善尽美。教师评语:实验成绩:指导教师签名:批阅日期:

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

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