数据结构最短路径例题_数据结构算法实验8图的最短路径问题附源代码.doc

浙江大学城市学院实验报告

课程名称 数据结构与算法

实验项目名称 实验八 图的最短路径问题

实验成绩 指导老师(签名 ) 日期

实验目的和要求

掌握图的最短路径概念。

理解并能实现求最短路径的DijKstra算法(用邻接矩阵表示图)。

二. 实验内容

1、编写用邻接矩阵表示有向带权图时图的基本操作的实现函数,基本操作包括:

① 初始化邻接矩阵表示的有向带权图 void InitMatrix(adjmatrix G);

② 建立邻接矩阵表示的有向带权图 void CreateMatrix(adjmatrix G, int n) (即通过输入图的每条边建立图的邻接矩阵);

③ 输出邻接矩阵表示的有向带权图void PrintMatrix(adjmatrix G, int n) (即输出图的每条边)。

把邻接矩阵的结构定义以及这些基本操作函数存放在头文件Graph2.h中。

2、编写求最短路径的DijKstra算法函数 void Dijkstra( adjmatrix GA, int dist[], edgenode *path[], int i, int n) ,该算法求从顶点i到其余顶点的最短路径与最短路径长度,并分别存于数组 path 和 dist 中。编写打印输出从源点到每个顶点的最短路径及长度的函数void PrintPath(int dist[], edgenode *path[], int n)。

3、编写测试程序(即主函数),首先建立并输出有向带权图,然后计算并输出从某顶点v0到其余各顶点的最短路径。

要求:把指针数组的基类型结构定义edgenode、求最短路径的DijKstra算法函数、打印输出最短路径及长度的函数PrintPath以及主函数存放在文件test9_2.cpp中。

测试数据如下:

0

0

1

2

3

5

4

4

8

2

3

10

7

6

5

9

6

15

4、填写实验报告,实验报告文件取名为report8.doc。

5、上传实验报告文件report8.doc与源程序文件test9_2.cpp及Graph2.h到Ftp服务器上自己的文件夹下。

三. 函数的功能说明及算法思路

包括每个函数的功能说明,及一些重要函数的算法实现思路

【结构说明】

const int MaxVertexNum=10; //图的最大顶点数

const int MaxEdgeNum=100; //边数的最大值

const int MaxValue=32767; //权值的无穷大表示

typedef int adjmatrix[MaxVertexNum][MaxVertexNum]; //邻接矩阵

typedef struct Node {

int adjvex;

struct Node *next;

} edgenode;//路径结点

【函数说明】

① void InitMatrix(adjmatrix &G)

功能:初始化邻接矩阵表示的有向带权图

思路:将邻接矩阵中的所有权值设置为无穷大(MaxValue)

② void CreateMatrix(adjmatrix &G, int n)

功能:建立邻接矩阵表示的有向带权图(即通过输入图的每条边建立图的邻接矩阵)

思路:按照输入的顶点信息和权值信息,更新邻接矩阵内对应的值

③ void PrintMatrix(adjmatrix G, int n)

功能:输出邻接矩阵表示的有向带权图 (即输出图的每条边)

思路:按照一定的格式输出邻接矩阵

④ void Dijkstra( adjmatrix GA, int dist[], edgenode *path[], int i, int n)

功能:求最短路径的DijKstra算法函数

思路:按照从源点到其余每一顶点的最短路径长度递增的次序依次求出从源点到每个顶点的最短路径及长度。设立一个集合S,用以保存已求得最短路径的终点,其初值为只有一个元素,即源点;一个数组 dist[n],其每个分量 dist[j] 保存从源点经过S集合中顶点最后到达顶点 j 的路径中最短路径的长度,其初值为从源点到每个终点的弧的权值(没弧则置为∞);一个指针数组path[n],path[j]指向一个单链表,保存相应于dist[j]的从源点到顶点 j 的最短路径(即顶点序列),初值为空。

⑤ void PATH(edgenode *path[], in

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

navicat连接mysql报10061错

可能原因:mysql服务未启动 解决办法:进入到计算机管理,找到服务,然后找到mysql服务,并启动该服务 转载于:https://www.cnblogs.com/mengyinianhua/p/8041201.html

长牙顺序

20个乳牙宝宝的诞生是有顺序的,虽然不一定一成不变,但是也可以作为参照的依据。 1.下乳中切牙 2.上乳中切牙 3.上乳侧切牙 4.下乳侧切牙 5.下第一乳磨牙 6.上第一乳磨牙 7.下乳尖牙 8.上乳尖牙 9.下第二乳磨牙 10.上第二乳磨牙 5~10个月&…

疲劳容器的定义_材料疲劳

结构力学材料疲劳什么是材料疲劳?材料疲劳 是一种结构在循环载荷作用下出现失效的现象。即使材料受到的应力远低于材料的静态强度,也可能会发生这种类型的结构损伤。疲劳是造成机械结构失效最常见的原因。组件在反复载荷作用下导致最终失效的过程&#x…

python天蝎座-day1笔记

一、接口测试即功能测试 最常见: get post 二、jmeter参数化有三种方法: 1、jmeter-选项-函数助手对话框-random-输入最小值和最大值,生成-将生成的函数字符串赋值到需要函数化的参数 2、添加配置元件:CSV Data Set Config&#x…

国产海量存储系统的新突破

3月8—14日,“十一五”国家重大科技成就展在北京国家会议中心举行。本次展览集中展出了一批对国民经济和社会发展有着重大影响、具有重大创新与突破和自主知识产权的重大标志性项目。 本次参展的项目约600项,参展实物近1000件,模型150多件。信…

软件工程电商系统数据库定义_某个电子商务系统项目的数据库设计

杨教授工作室,版权所有,盗版必究,1/13页11.1EbookStore/EBank项目的数据源设计1.1.1本项目中的数据库设计概述1、数据库设计(1)数据库设计方法一般数据库设计方法有两种,即属性主导型和实体主导型。属性主导型从归纳数据库应用的属性出发,在…

MYSQL高可用-Percona XtraDB Cluster

简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交。 2).多主复制,可以在任意节点进行写操作。 3).在从服务器上并行应用事件…

python 矩阵点乘_Day276:普通乘积、矩阵点乘、克罗内克积

1、普通矩阵乘法(matmul product)假设矩阵A大小是M*N,矩阵B大小是N*P,CAB这里选取一个例子这里的矩阵乘法要求相乘的两个矩阵一个的行数得等于另一个的列数,否则,无法进行乘机运算。2、矩阵点乘(hadamard product)矩阵点乘&#x…

java编程笔记18 文件压缩与解压缩

在java中,主要是利用ZipEntry,ZipInputStream和ZipOutputStream来实现zip数据压缩方式的编程方法, 构造方法摘要ZipEntry(String name) 使用指定名称创建新的 ZIP 条目。构造方法摘要ZipInputStream(InputStream in) 创建…

随机排列_图片视频特效一键生成,27 种特效可随机排列组合!

酷友们,大家好!相信很多酷友喜欢刷抖音,抖音视频中有很多特效也很酷。其实这些特效称作故障艺术(Glitch Art),就是利用事物形成的故障,进行艺术加工,使这种故障缺陷反而成为一种艺术品,具有特殊…

JMter随记

线程组( Threads (Users))理解:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。 注意事项:线程间变量相互独立。 一个测试计划内可以包含多个线程组。 可定义内容: 取样…

爱情 by叶挺王

所有的路 都是为你而铺设 所有的桥 都是为你而架备 所有的亭宇 都是为你而营造 所有的愿望 都是为你而存在 你是我的所有 为此 我日夜忧愁 漫漫长路 只怕你眷恋身后 危危廊桥 只怕你惊于飞流 幽幽楼阁 只怕你凄怨逗留 小小心愿 只怕你未能实现 为你忧愁 然而 我愿意 我愿意是路…

mysql 数据回滚_Mysql数据误删除快速回滚

作者 | Video极链科技OPSTeam整理 | 包包在数据库操作中,难免会因为各种各样的原因对数据造成损坏,这个时候就需要对数据库快速恢复。传统的方法会先恢复mysql备份,再去用mysqlbinlog抽取指定时间点的日志,再恢复,这样…

js 类数组arguments详解

arguments并不是一个真正的数组,而是一个“类似数组(array-like)”的对象; 就像下面的这段输出,就是典型的类数组对象: [12, 23, callee: ƒ, Symbol(Symbol.iterator): ƒ] 一、类数组 VS 数组 相同点&…

OSPF协议概述(一)

1. 根据来源不同,路由表中的路由通常可以分为以下三类: 链路层协议发现的路由(也称为接口路由或直连路由)。 由网络管理员手工配置的静态路由 动态路由协议发现的路由。(RIP,OSPF,IS-IS) 2. 距离矢量算法和…

深度工作:充分使用每一份脑力

浮躁已经成了普遍的社会现象。判断一个人是否浮躁非常容易,看他一天主动拿起手机的次数就可以了。据TED的演讲者说,这个值一般是50次,除了8小时的睡觉之外,基本上每20分钟就要去翻翻手机。 你会去用手机做什么?看微信&…

mysql表碎片空间计算_一篇介绍表空间碎片产生,计算和解决的文章。

一篇介绍表空间碎片产生,计算和解决的文章。我们知道,oracle作为一种大型数据库,广泛应用于金融、邮电、电力、民航等数据吞吐量巨大,计算机网络广泛普及的重要部门。对于系统管理员来讲,如何保证网络稳定运行&#xf…

Python自动化--语言基础5--面向对象、迭代器、range和切片的区分

面向对象 一、面向对象代码示例: 1 class Test(): #类的定义2 car "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果3 def __init__(self): #构造方法4 self.na…

CCIR601和CCIR656标准的区别

关于这两种信号的区别: ITU-R BT 601:16位数据传输;21芯;Y、U、V信号同时传输。 ITU-R BT 656:9芯,不需要同步信号;8位数据传输;串行视频传输;传输速率是601的2倍;先传Y,…

ssis mysql to server_SSIS:将表从MySQL复制到SQL Server 2008

SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Errorcode: 0x80040E21. An OLE DB record is available. Source: “MicrosoftSQL Server Native Client 10.0” Hresult: 0x80040E21 Description:“Multiple-step OLE DB operation generated errors. Chec…