资源简介
数据结构与算法中图求最短路径,迪杰斯特拉算法的实现,带详细注释,可完整实现。
代码片段和文件信息
#include “stdio.h“
#define MAXSIZE 20
#define INFINITY 9999
typedef struct {
char vexs[MAXSIZE];//vertices infoemation
int arcs[MAXSIZE][MAXSIZE];
int arcNum vexNum;
}MGraph;
void dijkstra(MGraph G int v) {
int dist[MAXSIZE]; //dist[i]:源点到点 i 的路径长度
int path[MAXSIZE][MAXSIZE]; //path[i][]:源点到点 i 经过的顶点j下标集合
int i j k m min n flag;
for(i=0; i for(j=0; j path[i][j] = -1;
}
}
for(i=0; i dist[i]=G.arcs[v][i]; //dist[]初始状态为arcs[][]第v行
if(dist[i]!=0 && dist[i]!=INFINITY) {//与源点 v 有关系的顶点第一个经过的点为 v
path[i][0]=v;
}
}
n=0; //打印最短路径时对应第%d条
flag=1; //循环结束标志
//从小到大找最短路径
while(flag) {
k=0; //每一轮循环中要选择的最短路径长度对应的顶点下标
min=INFINITY; //每一轮循环中要选择的最短路径长度
for(j=0; j if(dist[j]!=0 && dist[j] k=j;
min=dist[j];
}
}
printf(“第%d条最短路径长度为%d--(“ ++n min); //显示最短路径
for(j=0; j if(path[k][j]!=-1) { //打印从源点到最短路径顶点经过的顶点
printf(“%d“ path[k][j]);
}
}
printf(“%d)\n“ k);
for(j=0; j if(j!=k && G.arcs[k][j]!=INFINITY) {
if(dist[k]+G.arcs[k][j] dist[j]=dist[k]+G.arcs[k][j];
for(m=0; m
- 上一篇:MFC_Clock.zip
- 下一篇:C语言 个人通讯录管理系统
相关资源
- C流程图生成器,用C语言代码 生成C语
- 将图片转换为C语言数组的程序
- 电子时钟 有C语言程序,PROTEUS仿真图
- 用C语言进行数字图像处理
- Wi-Fi IoT智能家居套件-Hi3861(原理图
- Qt画图工具源码(qgraphics draw)
- Qt 实现心电图
- Qt实现 屏幕截图
- 使用QWT库实现接收串口数据,并根据
- 使用wxWidgets进行跨平台程序开发
- QT视频播放器(基于FFmpeg)
- ADS1263驱动程序+电路图
- 基于esp32的摄像头采集图像代码
- stm32f103c8t6开发板原理图+pcb
- 基于arduino的红绿灯程序,包附原理图
- 数据结构 图的遍历源代码
- qt处理图形
- H.264标准详细图解
- CreatBitmap图片合成源码
- 易语言png 多行多列切图
- basler相机图像采集和显示
- 交互式计算机图形学 第六版 OpenGL源代
- c++ 画图(14Qt-XPS)
- 图形学简单绘图系统
- mfc绘图大全(画直线、矩形、椭圆)
- C++调用百度地图案例
- opencv图片扫描以及校正
- MFC文档_视图_框架_模板结构体系深入
- 图像预处理五种滤波
- 思维导图(C++ Primer Plus(第六版).
评论
共有 条评论