Débutant en liste chainée

Fermé
mrwnsllm Messages postés 3 Date d'inscription vendredi 27 décembre 2013 Statut Membre Dernière intervention 27 décembre 2013 - 27 déc. 2013 à 11:16
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 déc. 2013 à 18:02
Je suis débutant en C , et j'ai un projet à faire mais malheuresement j'ai eu beaucoup de problème.
Pour commencer , j'ai fait une fonction qui initialise une liste chainée V par les c premiers éléments d'une autre liste chainée X .
Lorsque j'exécute le programme , il me signale l'erreur " a cessé de fonctioner" (windows 8)

void initialisation_clusters(personne *X, clusters *V ,int c)
{


clusters *first,*p,*precedV;
personne *tmpoX ;
tmpoX = (personne *)malloc(sizeof(personne));
tmpoX=X;

double num1, num2; int i ;first=precedV=NULL;
num1=tmpoX->perso.taille;
num2=tmpoX->perso.poids;
for (i=1;i<c;i++)
{p=(clusters *) malloc( sizeof(struct clusters) );
p->centre.taille = num1;
p->centre.poids = num2;
if (first==NULL) first=p;
else precedV-> next =p;
precedV=p;
tmpoX=tmpoX->next;
num1=tmpoX->perso.taille;
num2=tmpoX->perso.poids;
}

}

4 réponses

tu utilises quoi comme compilateur?
as tu un anti-virus, si oui lequel?
1
mrwnsllm Messages postés 3 Date d'inscription vendredi 27 décembre 2013 Statut Membre Dernière intervention 27 décembre 2013
27 déc. 2013 à 11:24
J'ai oublié les structures
typedef struct coordonnees coordonnees;
struct coordonnees
{
double taille ;
double poids ;
};

typedef struct personne personne;
struct personne
{
coordonnees perso;
personne* next;
};

typedef struct clusters clusters;
struct clusters
{
coordonnees centre ;
clusters *next;
};
0
mrwnsllm Messages postés 3 Date d'inscription vendredi 27 décembre 2013 Statut Membre Dernière intervention 27 décembre 2013
27 déc. 2013 à 11:37
Code blocks,
Oui j'utilise Windows Defender comme anti-virus
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
27 déc. 2013 à 18:02
Bonjour,

tmpoX = (personne *)malloc(sizeof(personne));
tmpoX=X; 

Belle fuite de mémoire ;-). Tu alloues une zone (malloc) et ensuite tu écrases le pointeur sur cette zone par X Twww.g
(donc plus de free() possible).
0