Débutant en liste chainée

mrwnsllm Messages postés 3 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. evilfalcon
     
    tu utilises quoi comme compilateur?
    as tu un anti-virus, si oui lequel?
    1
  2. mrwnsllm Messages postés 3 Statut Membre
     
    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
  3. mrwnsllm Messages postés 3 Statut Membre
     
    Code blocks,
    Oui j'utilise Windows Defender comme anti-virus
    0
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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