2010-09-15 96 views
0

邻接矩阵我需要一些帮助的Dijkstra在C.Dijkstra算法上用C

我产生我的邻接矩阵,算法看起来像:

int mat[NB][NB] = {{0, 171, MAX, 132, [...]}, {171, 0, 30, 39, [...]}, , [...]}; 

我发现这个实现: http://www.answers.com/topic/dijkstra-s-algorithm-1但路径是一维数组,而我的矩阵是一个二维数组。

有没有办法将一个转换为另一个? 或者也许有人有一种方法来处理这种矩阵。

预先感谢任何帮助

回答

0

如果您通过mat[0]函数期望int *(和大小),该函数可以很容易地将二维矩阵视为一维矩阵。

#include <stdio.h> 

int foobar(int *arr, int siz) { 
    int sum = 0; 
    for (int i = 0; i < siz; i++) sum += arr[i]; 
    return sum; 
} 

int main(void) { 
    int mat[10][10] = {{4, -3, 7}, {5}}; 
    printf("%d\n", foobar(mat[0], 10*10)); 
    return 0; 
} 

编辑: ideone(http://ideone.com/2mLi7)运行程序以上无投诉:-)

0

在你所提供的链接,path就是该算法的输出被写入阵列。该例子中的邻接矩阵显然是dist二维数组。