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

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);
	}	
}
Appel de ma fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ajoutArc(j,nbSucc,tabSommet[i].premiereRue);