2010-09-15 94 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二維數組。