Dijkstra sur la masortingce d’adjacence en C

J’ai besoin d’aide avec l’algorithme de Dijkstra en C.

J’ai généré ma masortingce d’adjacence, qui ressemble à quelque chose comme:

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

J’ai trouvé cette implémentation: http://www.answers.com/topic/dijkstra-s-algorithm-1 mais le chemin est un tableau à 1 dimension et ma masortingce est un tableau à 2 dimensions.

Y at-il un moyen de transformer l’un à l’autre? Ou peut-être que quelqu’un a une méthode pour traiter ce type de masortingce.

Merci d’avance pour votre aide

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

 #include  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 🙂

Dans le lien que vous avez fourni, path est un tableau dans lequel la sortie de l’algorithme est écrite. La masortingce d’adjacence dans cet exemple est apparemment la masortingce 2D dist .