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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构课程设计Floyd算法求解最短路径Word格式.docx

1、程序清单 (应带有必要的注释)航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:利用弗洛伊德(Floyd)算法求解最短路径院(系):计算机学院专 业:计算机科学与技术(物联网方向)班 级:34010105学 号:姓 名:指导教师:说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致中所罗列的容以外,报告中不包含其他人己经发

2、表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。本人签名: 日期: 2015 年 1 月 5 日课程设计任务书课程设计名称 数据结构课程设计专业学生思班级学号2013040101204题目名称起止日期2015年1月5日起至16日止课设容和要求:给出一无向图,图上每一个顶点表示一个城市,顶点之间的边表示城市之间存在路径,边上的权值表示城市间的路经长度。利用弗洛伊德(Floyd)算法求解最短路径求解任意两

3、个城市之间的最短路径问题。参考资料: 算法与数据结构C语言程序设计教研室审核意见: 教研室主任签字:指导教师(签名)日学 生(签名)第一章 需求设计1.1 题目介绍将问题分解为三个方面,第一个方面是对于无向图的存储问题,第二个方面是实现弗洛伊德(Floyd)算法求解最短路径,第三个方面是将最短路径输出。首先对于图的建立选择合适的存储结构,考虑到之后要用的弗洛伊德算法所以选择采用邻接矩阵存储无向图。然后采用弗洛伊德算法,该算法又叫插点法。是利用三重循环产生一个存储每个结点最短距离的矩阵,基本思想是设置一个n阶矩阵D(k),D(k)ij表示从i到j的路径长度,k表示运算步骤。用两个顶点之间边的权值

4、作为路径长度,无边连接记做无穷,多次循环,向原路径加入新的顶点,若增加的顶点使得路径比原路径短,则用新路径代替原始路径,将顶点信息存储在另一个三维数组p中,pvwu存储的是由i到j路径经过的所有顶点。三重循环执行完毕最短路径的信息存储在两个数组中。最后将最短路径的信息输出。1.2 功能要求一个无向图用每个顶点代表城市,顶点之间边的权重表示城市之间的路径,将顶点信息和边的信息输入程序,即可得到每两个城市之间的最短路径长度值以及这条路径经过的城市。可以为建址问题提供参考。设计环境:(1)WINDOWS 7系统(2)VisualC+开发环境开发语言:C语言第二章 程序设计2.1 详细设计 2.1.1

5、功能模块图用弗洛伊德算法求解最短路径主函数输出最短路径信息调用弗洛伊德算法入无向图顶点及权值图2.1功能模块图2.1.2 函数描述Find:根据名称得到指定顶点在顶点集合中的下标,利用此函数找到顶点所在位置,进而对无向图赋权值。Create:创建无向图的邻接矩阵,因为每条边都有权值,创建的是无向网的邻接矩阵,用权值代替1,没有边连接则为无穷。FLOYD:设置一个n阶矩阵D(k),D(k)ij表示从i到j的路径长度,k表示运算步骤。主函数:在主函数里定义一个无向图,一个三维矩阵p,二维矩阵D,对各个函数进行调用,实现无向网的建立,运用弗洛伊德算法求解出最短路径,将路径长度以及经过的顶点信息输出。

6、2.2 主要算法描述 图2.2.1 FLOYD函数 图2.2.2 Find函数 图2.2.3 Main函数 图2.2.4 Create函数第三章 使用说明3.1 用法说明1.将顶点数和边数输出,中间用空格隔开。图3.1.12.输入顶点信息。图3.1.23.依次输入每条边连接的两个顶点用空格间隔,边的权值。图3.1.34.得到每两个顶点城市间的最短距离以及经过的城市。图3.1.4.4第四章程序测试4.1运行结果图4.14.2 存在的缺陷 1.无向图的顶点信息只能用一个字符表示。将存储顶点信息的字符型改为字符数组就可以完善该缺陷。2.将两点的最短路径输出时只能显示经过的顶点有哪些,无法显示真实的路

7、径顺序。3.输入无向图信息只能用手动输入,无法用文件直接写入。4.输入不符合要求的数据会使程序自动停止。参考文献1 长海.C语言程序设计M.:高等教育,20062吴启武.C语言课程设计案例精编.:清华大学,2011.3郭翠英.C语言课程设计案例精编.:中国水利水电,2004.4灵芝, 余键.C语言课程设计案例精编.:清华大学,2008.5黄明, 梁旭, 万洪莉.C语言课程设计.:电子工业,2006附 录(关键部分程序清单)#include stdio.hstdlib.h#define MAX 20#define INFINITY 9999typedef bool PathMatrixMAXMA

8、XMAX;typedef int DistanceMatrixMAXMAX;typedef struct int vexnum,arum; char vexsMAX; int arcsMAXMAX;MGraph;int Find(char vex, MGraph MG)/根据名称得到指定顶点在顶点集合中的下标 vex表示顶点 / return 如果找到则返回下标,否则返回 int i; for (i=0;iMG.vexnum;i+) if (MG.vexsi = vex) return i; return 0;void Create(MGraph &G) int i,j,k,v1,v2,w;

9、printf(请输入顶点数和边数:); scanf(%d %d,&G.vexnum,&G.arum); getchar(); for(i=0;G.vexnum;i+) 请输入第%d个结点:,i+1);%cG.vexsi); for(j=0;jj+) G.arcsij=INFINITY; for(k=0;kG.arum;k+) char c1,c2;请输入与第%d条边相连的两条边v1 v2:,k+1);c1);c2);请输入该边的权重:%dw); v1=Find(c1,G); v2=Find(c2,G); G.arcsv1v2=w; G.arcsv2v1=w;void FLOYD(MGraph

10、G,PathMatrix &P,DistanceMatrix &D) int v,w,u,i; for(v=0;v+v) for(w=0;w+w) Dvw=G.arcsvw; for(u=0;u+u) Pvwu=false; if (DvwINFINITY) Pvwv=true; Pvww=true; for(u=0; for(v=0; for(w=0; if (Dvu+DuwDvw) Dvw=Dvu+Duw; for(i=0;+i) Pvwi=Pvui|Puwi; int main() MGraph G; int i,j,k; Create(G); PathMatrix p; Distanc

11、eMatrix D; FLOYD(G,p,D); if(i=j) continue; else printf(%c 到%c 经过的顶点有:,G.vexsi,G.vexsj); for(k=0; if(pijk=0) continue; else printf(%c ,G.vexsk); 最短路径长度为: %dnn,Dij); return 0;课程设计总结:此次课程设计中,我了解到了许多以前不太会的知识,也在对程序的不断的调试中认识到调试时的细心是很重要的,这些都让我受益匪浅。譬如,getchar()的使用,用在输入字符型数据的时候,getchar()可以将空格吸收从而避免将空格带入数据中。在这次课程设计中,我还理解了数据结构给成个程序带来的简洁性以及函数的调用,数据结构将繁琐的程序分成几个部分,看起来简单易懂。这些都是我在以前的学习中不理解的,让我在这次课程设计中学习新知识的同时也感受到很多快乐,对C语言及以后要学习的一些专业课程也产生了浓厚的兴趣,同时我也意识到有很多知识是我不了解的,我还需要更努力的学习,来丰富学习生活,充实自我。 我会在以后的学习中尝试更多挑战,培养自己的能力。这次课程设计激发了我的兴趣,虽然只是简单的程序设计,但我也感受到了程序做完之后的兴奋与自豪,我会更加努力的。

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

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