最短路径迪杰斯特拉算法实现
来源:互联网 发布:烟雾效果app软件 编辑:程序博客网 时间:2024/05/21 18:43
#include <stdio.h>#include <stdlib.h>#define MAXVEX 9#define INFINITY 65535typedef int Pathmatrix[MAXVEX];//存储最短路径typedef int ShortPathTable[MAXVEX];//存储到最短路径的权值和typedef char VertexType;typedef int EdgeType;typedef struct {VertexType vers[MAXVEX];EdgeType matrix[MAXVEX][MAXVEX];int numVertexes,numEdges;}MGraph;void CreateGraph(MGraph *G){ int i,j,k,w; printf("输入顶点数和边数"); scanf("%d%d",&G->numVertexes,&G->numEdges); for(i=0;i<G->numVertexes;i++) scanf(&G->numVertexes); for(i=0;i<G->numVertexes;i++) for(j=0;j<G->numVertexes;j++) { G->matrix[i][j]=INFINITY; } for(k=0;k<G->numEdges;k++) { scanf("%d%d%d",&i,&j,&w); G->matrix[i][j]=w; G->matrix[j][i]=G->matrix[i][j]; }}//P为前驱顶点下标数组void ShortestPath(MGraph G,int v0,Pathmatrix *P,ShortPathTable *D){ int v,w,k,min; int final[MAXVEX];//为1表示已经求得最短路劲 for(v=0;v<G.numVertexes;v++)//初始化 { final[v]=0; (*D)[v]=G.matrix[v][v0]; (*P)[v]=0;//初始化路径p数组为0 } (*D)[v0]=0; final[v0]=1; for(v=1;v<G.numVertexes;v++) { min=INFINITY; for(w=0;w<G.numVertexes;w++) { if(!final[w]&&[*D][w]<min) { k=w;//因为还继续循环,所以先存储到k min=(*D)[w]; } } final[k]=1; for(w=0;w<G.numVertexes;w++) { if(!final[w]&&min+G.matrix[k][w]<(*D)[w]) { //说明找到了更短的路径 (*D)[w]=min+G.matrix[k][w]; (*P)[w]=k; } } }}int main(){ printf("Hello world!\n"); return 0;}
0 0
- 最短路径迪杰斯特拉算法实现
- 最短路径算法实现
- 最短路径算法实现
- 迪杰斯特拉算法--最短路径
- 迪杰斯特拉算法-最短路径
- 最短路径-迪杰斯特拉算法
- 最短路径(迪杰斯特拉算法)
- 最短路径--迪杰斯特拉算法
- 迪杰斯特拉-最短路径算法
- 最短路径:迪杰斯特拉算法
- 最短路径--迪杰斯特拉算法
- 最短路径---迪杰斯特拉算法
- 最短路径实现-迪杰斯特拉算法-java实现
- 最短路径迪杰斯特拉算法C语言实现__Dijkstra
- 算法实现Java之最短路径迪杰斯特拉(Dijkstra)
- floyd最短路径算法的实现
- Dijkstra 最短路径算法C#实现
- 最短路径实现(Dijkstra算法)
- C++中函数调用中的内存分配
- java 链表操作
- 关于arcmap制作专题图—连续图例
- iOS开发-底层篇-Class详解
- android studio的 .gitignore文件的一般写法
- 最短路径迪杰斯特拉算法实现
- RTTI、虚函数和虚基类的实现方式、开销分析及使用指导
- 常见的excel报表操作
- JS语句是怎么解析的(同一个作用域)
- View 事件分发机制
- 关于JS中的constructor与prototype
- jfianal忘记加ORM,产生NullpointerException错误
- poj 1661 help Jimmy
- tortoise初步