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

课程名称 数据结构与算法

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

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

实验目的和要求

掌握图的最短路径概念。

理解并能实现求最短路径的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

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

  1. C语言二叉树实验报告流程图,二叉树的建立与遍历实验报告(c语言编写,附源代码).doc...

    二叉树的建立与遍历实验报告(c语言编写,附源代码).doc 第 1 页,共 9 页二叉树的建立与遍历实验报告级 班 年 月 日 姓名 学号_ 1实验题目建立一棵二叉树,并对其进行遍历(先序.中序.后序 ...

  2. 数据结构最短路径例题_《数据结构课程设计》最短路径问题实验报告

    <<数据结构课程设计>最短路径问题实验报告>由会员分享,可在线阅读,更多相关<<数据结构课程设计>最短路径问题实验报告(17页珍藏版)>请在人人文库网上 ...

  3. 数据结构最短路径例题_编程小白暑期进阶笔记45-C语言数据结构与算法最短路径和dijkstra算法...

    最短路径 算法特点: 迪科斯彻算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树.该算法常用于路由算法或者作为其他图算法的一个子模块. 算法思路: Dijks ...

  4. python数据结构视频百度云盘_数据结构与算法Python视频领课

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 课程简介: 本课程包含Python编程基础的基本语法及变量,基本数据结构,Code Structure,Function.让学生在学会Python基础的同 ...

  5. python数据结构与算法分析_数据结构和算法分析

    问题引出 假设有一道题目:有一组N个数而要确定其中第k个最大者,我们称之为选择问题,那么这个程序如何编写?最直观地,至少有两种思路: 1.将N个数读入一个数组中,再通过某种简单的算法,比如冒泡排序法, ...

  6. 数据结构迷宫代码_数据结构课程设计——迷宫求解(二)

    前言 接上文的介绍,本文将主要介绍如何生成随机迷宫,在网上找到的资源也比较多,这里我选取了随机 Prim 算法生成迷宫,选择这个算法的理由如下: 算法思想简单,易于实现 生成的迷宫比较自然,不会出现明 ...

  7. java对数据结构的了解_数据结构对java有用吗

    设计一个数据结构其实就是把现有的基本数据类型组织.封装起来.相对来说数据结构对于C/C++比较重要,因为JAVA类机制实在太强大了,类库其实可以理解为数据结构的封装.即使对于一些比较复杂的抽象数据类型 ...

  8. java迪杰斯特拉算法实例,Java 图的最短路径dijstra(迪杰斯特拉)算法和拓扑排序

    一.图的最短路径从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径 图的最短路径有许多重要的应用. 例如:上图中v0-v8有9个点,可以看做不同的地点,现在要规 ...

  9. mysql的触发器实验报告_数据库原理实验报告s11-数据库触发器的创建.doc

    数据库原理实验报告s11-数据库触发器的创建.doc 数据库管理系统SQLSERVER实验报告第1页2011年5月4日实验11数据库触发器的建立实验日期和时间20141128实验室软件工程室班级12计 ...

最新文章

  1. linux内核杂记(15)-系统调用(2)
  2. windows设置网卡参数
  3. jQuery插件备忘
  4. java enum 变量_java枚举使用详解
  5. winform checkbox要点击两次_这个Winform的UI库也太全了!四十多个控件都在这一个项目里了...
  6. python中float输入文字_为什么Python的float对于一些很长的输入会引发ValueError?
  7. [转载] Java获取嵌套的json串里的返回结果
  8. [NLP] 酒店名归类
  9. TensorFlow中的优化算法
  10. 手机连接电脑DCIM目录下文件夹和图片显示不全
  11. 《富爸爸穷爸爸》阅读笔记
  12. mybatis报错:Error evaluating expression
  13. Linux ubuntu 20.04安装unrar
  14. wishbone协议(B.3)下载地址
  15. 软件测试-柠檬班python全栈自动化50期测试学习笔记分享
  16. 手机怎么进ph_干货 | 关于pH调整的有效方法
  17. 乘法原理的例题和答案_加法原理与乘法原理练习题
  18. Memcached 简介
  19. js的for循环中return可以跳出循环,而使用forEach等不可以跳出循环
  20. vbs实现的支持拖动的txt文本切割器

热门文章

  1. springcloud(五):熔断监控Hystrix Dashboard和Turbine
  2. 使用python matplotlib画图
  3. jquery $.trim()方法使用介绍
  4. 怎样查看电脑开机记录
  5. eBay:PayPal今年移动支付总额将超35亿美元
  6. ORB-SLAM2-金字塔求解-特征点的提取-描述子的计算
  7. 数字后端——低功耗单元库
  8. Val编程-文本操作
  9. 将数组作为参数,调用该函数时候给的是数组地址还是整个数组
  10. 自学python从零开始学_新手学习python-从零开始学习