[Debutante] Fonction recursive avec un pointeur
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:
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
Code:
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);
}
} |
Appel de ma fonction
Code:
ajoutArc(j,nbSucc,tabSommet[i].premiereRue);