2010-09-15 6 views
0

j'ai besoin d'aide avec l'algorithme de Dijkstra en C.Dijkstra sur la matrice de contiguïté en C

J'ai produit ma matrice de contiguïté, qui ressemble à:

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

J'ai trouvé cette mise en œuvre: http://www.answers.com/topic/dijkstra-s-algorithm-1 mais le chemin est un tableau à 1 dimension et ma matrice est un tableau à 2 dimensions.

Existe-t-il un moyen de transformer l'un à l'autre? Ou peut-être quelqu'un a une méthode pour traiter ce genre de matrice.

Merci à l'avance pour toute aide

Répondre

0

Si vous passez mat[0] à une fonction qui attend un int * (et une taille), cette fonction peut facilement traiter la matrice bidimensionnelle comme une matrice à une dimension.

#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; 
} 

Edit: ideone (http://ideone.com/2mLi7) exécute le programme ci-dessus sans se plaindre :-)

0

Dans le lien que vous avez fourni, path est un tableau où est écrit la sortie de l'algorithme. La matrice d'adjacence dans cet exemple est apparemment la matrice 2D dist.