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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(Dijkstra最短路径.doc)为本站会员(j35w19)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Dijkstra最短路径.doc

1、福建农林大学计算机与信息学院(程序设计类课程)实验报告课程名称: 数据结构姓 名: 吴秋月系: 计算机专 业: 计算机科学与技术(专升本)年 级: 2008 级学 号: 081806111指导教师: 黄思先职 称: 副教授福建农林大学计算机与信息学院实验报告系: 计科(专升本) 专业: 计算机科学与技术 年级: 08 级 姓名: 吴秋月 学号: 081806111 实验室号:_田 514 计算机号: 18 实验三 Dijkstra 最短路径(验证性)一、 实验目的和要求1,掌握图的有关图相关操作算法2,熟悉图的基本存储方法3,了解掌握图的基本术语二、 实验内容和原理实验内容:已知某交通网中,由

2、站点 (源点)出发到达 等 5 个结点(终点)的可能路径 1 2 3 4 5 6如下有向连通网所示。编程计算和输出从 出发到达其它 5 个结点的最短路径和路径的长度。 1实验原理:这是一个典型的单源点最短路径问题,可以利用 Dijkstra 算法求解。有向连通的交通网信息,可以采用带权的邻接矩阵存储。运用 Dijkstra 算法计算出各最短路径上每个终点的前驱站点以及各最短路径的长度,再利用栈通过回溯的方法输出最短路径。三、 实验环境硬件环境:多媒体实验室学生用微机局域网环境软件环境:Windows xp professionalTurbo C/C+ for windows 四、 算法描述及实

3、验步骤1,算法描述 1 2 3 4 5 6 16 35 69 1 28 8 2 19 1 3 3 5 10 4 11 5 7 61 确定 2 确定 6 确定 4 确定 3 确定 5 确定2,算法描述及实验步骤在 Turbo C/C+ for windows 中新建的名为 Dijkstra.c 的 C 程序文件,在编译窗口编写程序代码,若编译链接都通过,则运行程序,得出正确的结果,正确的程序代码及相关注释如下所示:#include “stdio.h“#include “conio.h“#include “alloc.h“#define N0 10 /宏定义一个常量 N0 值#define inf

4、i 32767 /宏定义一个常量 infi 值typedef int AdjMatrixN0+1N0+1;typedef struct arcnode int v,w; /v 表示顶点,w 表示权值struct arcnode next;ArcNode;typedef struct node int degree; /表示度ArcNode *first; /指向 ArcNode 的第一个指针AdjListN0+1;AdjMatrix adjmatrix; /定义一个整形二维数组 adjmatrixAdjList adjlist;int n; /表示结点个数 0 116 135 1 169 1

5、1 0 116 135 1 169 124 20 116 135 131 669 124 20 116 134 431 636 424 20 116 134 431 635 324 20 116 134 431 635 324 2void createAdj() int i,j,w,k; / w 表示权值,k 表示是否的有向图还是无向图ArcNode *p;freopen(“c:dijkstra.in“,“r“,stdin); /可用文件进行输入freopen(“c:dijkstra.out“, “w“, stdout); /可用文件进行输出scanf(“%d“, /输入个数 nscanf(“

6、%d“, /K 为 0 时是无向图,为 1 是有向图 .for(i=1;in | jn) /若 i、j 不在所给的范围当中,就结束该循环break;adjmatrixij=w; /把 w 权值写入 i 行 j 列的邻接距阵里p=adjlisti.first; /头指针指向 p while(p if(p) continue;p=(ArcNode*)malloc(sizeof(ArcNode); /给 p 分配新空间p-v=j; p-w=w; / j 赋给 p 的顶点,w 赋给 p 的权值p-next=adjlisti.first; / p 的下一个结点指向 adjlisti的头指针adjlist

7、i.first=p; /链表 adjlisti的第一个指针在指向 p adjlistj.degree+;if(k=0) adjmatrixji=w;p=(ArcNode*)malloc(sizeof(ArcNode); /给 p 分配新空间p-v=i; p-w=w; / i 赋给 p 的顶点,w 赋给 p 的权值p-next=adjlistj.first; / p 的下一个结点指向 adjlisti的头指针 adjlistj.first=p; /链表 adjlisti的第一个指针在指向 p adjlisti.degree+;while(1);void dijkstra(int x) / 用 d

8、ijkstra 算法实现最短路径 int distN0+1, pathN0+1, markN0+1; /*定义 3 个数组,dist 存储源点到个结点最短路径,path 存储源点到当前结点路径上的倒数第 2 个点,mark 存储的数为 2 时表示结点未确定,为 1 时表示结点已确定。*/int i,j,k,min; for(i=1; idistk+(long)adjmatrixkj) /如果未确定的结点j 在经过刚已确定的结点 k 的路径比当前结点值小 distj=distk+adjmatrixkj; /*修改结点 j 的路径值,路径值为上一次已确定的结点 k 的路径值加上结点 k 到 j 的

9、路径值 */pathj=k; /修改结点 j 的 path 值为上次已确定的 k 结点for(i=1; i=n; i+) if(i!=x) /如果 i 不等于源点 x printf(“%d-“, i); k=pathi; /k 为源点到 i 路径上的倒数第 2 个结点 while(k!=x) / 当 k 不等于 x ,循环输出 printf(“%d-“, k);k=pathk; /直到 k 为源点printf(“%d:%dn“, k, disti); /输出源点和总路径值main()clrscr(); /清屏createAdj(); printf(“nDijkstra:n“);dijkstra(1); /源点为 1,即从 1 开始。五、 调试过程调试表明调试通过,运行程序便可以得出正确结果。六、 实验结果输入相应的数据,得出结果,截图如下:七、 总结通过这次试验,了解最短路径的概念,掌握构建单源最短路径的方法。学会了Dijkstra:算法,而且通过该算法使我更熟悉编程的一些语法和思想。参考文献:1 宁正元,王秀丽 算法与数据结构 清华大学出版社 20062 严蔚敏 吴伟民 数据结构(C 语言版) 清华大学出版社 20063 宁正元,王秀丽 算法与数据结构习题精解和实验指导 清华大学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报