Bonjour,
J'apprend le C cette année et j'ai un projet de graphe où l'on doit sortir le plus court chemin. On a bossé les structures, trouver l'algorithme dijistraka qu'on va devoir programmer. Mais j'ai un p'tit souci sur une fonction recursive qui a un pointeur en paramètre. En effet, mon programme compile mais affiche erreur de segmentation a l'execution. J'ai beaucoup de mal avec les pointeurs, et j'avoue je bute, si au cas, vous voyez mon erreur. Merci bcp
Structure du graphe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 /*SOMMET*/ typedef struct Sommet { char *nomSommet; int code; struct Sommet *predecesseur; struct ChainonRue *premiereRue; }Sommet; typedef struct ChainonRue { char *nomRue; int poids; Sommet *sommetSucc; struct ChainonRue *chainonRueSuivant; }ChainonRue;
Fonction recursive
Appel de ma fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 /*Ajoute les arcs*/ void ajoutArc(int j,int nbS,ChainonRue *prec) { ChainonRue *c=(ChainonRue*)malloc(sizeof(ChainonRue)); int numSom,poids; while(j<=nbS) { /*Creation du chainon*/ fscanf(f,"%d",&poids); c->poids=poids; fscanf(f,"%d",&numSom); c->sommetSucc=&tabSommet[numSom]; c->chainonRueSuivant=NULL; printf("chainon cree : %d %d \n",c->poids,numSom); if(j==1) prec=c; else prec->chainonRueSuivant=c; ajoutArc(j++,nbS,c); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part ajoutArc(j,nbSucc,tabSommet[i].premiereRue);
Partager