最短路径的程序---学会如何调试
2010-12-13 09:15
281 查看
#include <limits.h> #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct a{ int vexnum; int arcnum; int arc[5][5]; }MGraph; typedef struct b { char temp[5][5]; }PathMatrix; void Shortest_DIJ(const MGraph * G ,const int v0,PathMatrix * P,int *D) { int v, w, i,j, min; char final[5]; for (v = 0;v < G->vexnum; ++v) { final[v] = 0; D[v] = G->arc[v0][v]; for (w = 0 ;w < G->vexnum; ++w) P->temp[v][w] = 0; if (D[v] < INT_MAX) { P->temp[v][v0] = 1; P->temp[v][v] = 1; } } D[v0] = 0; final[v0] = 1; for (i = 1;i< G->vexnum; ++i) { min = INT_MAX; for (w = 0 ; w < G->vexnum; ++w) if (!final[w]) if(D[w] < min) { v = w; min = D[w]; } final[v] = 1; for (w = 0; w < G->vexnum; ++w) if (!final[w] && (min + G->arc[v][w] < D[w])) { D[w] = min + G->arc[v][w]; for (j = 0; j < G->vexnum ; ++j) P->temp[w][j] = P->temp[v][j]; P->temp[w][w] = 1; } } for (i = 0;i < 5;++i) { for (w = 0 ;w <= i; ++w) if (P->temp[i][w]) printf("%d/t",w); printf("/n"); } printf("/n"); } int main(void) { MGraph G = { 5, 8, { {INT_MAX,4,5,4,1}, {4,INT_MAX,2,2,2}, {3,2,INT_MAX,3,2}, {2,INT_MAX,3,3,5}, {1,3,2,5,INT_MAX} } }; PathMatrix P = { { {0xFF,0xFF,0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF,0xFF,0xFF} } }; int D[5]; Shortest_DIJ(&G,3,&P,D); return 0; }
相关文章推荐
- 学会如何调试程序bug
- 如何调试程序的后台作业
- Android 软件开发之如何使用Eclipse Debug调试程序详解
- ios如何联机调试和发布程序
- 如何使用Visual C++调试程序?【转贴】
- XCode4如何解决调试程序时,忽然崩溃,而找不到崩溃的代码
- java 如何获取程序运行时的相对路径
- window services程序如何调试
- 西门子200如何实现远程监控和程序调试
- 如何更有效的调试运行MATLAB程序(阅读)
- XCode4如何解决调试程序时,忽然崩溃,而找不到崩溃的代码
- 终于明白了KDevelop里面如何调试控制台程序了
- 教你如何调试sharepoint 文档库事件处理程序,呵呵
- 如何在NT下调试ISAPI程序?
- Android模拟内存紧张,应用被杀死如何模拟应用程序被杀掉? 更新:Daniel Lew指出,最简单的方法是在DDMS中点击”Stop Porcess”杀掉你的程序,在你调试程序的时候可以这样做。
- 如何调试你的C#程序
- nodejs开发中如何调试基于多进程的程序
- C++程序如何获得自身路径(Qt源码)
- IOS开发 如何联机调试和发布程序(99$) -转载
- 如何联机调试和发布程序(99$)