Clonage de liste chainée et suppression

avillenave Messages postés 26 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 28 novembre 2007 - 27 juin 2005 à 16:44
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 - 27 juin 2005 à 21:35
Bonjour,





Je développe actuellement en C, un algo de recuit simulé avec un calcul d'entropie




J'ai un tableau de liste chainée





Bon, dans cet algo, je dois recreer une copie exacte de ce tableau de
liste chainée. Et le clone je dois déplacer un élément d'une liste vers
une autre liste du tableau.





J'obtiens donc 2 liste != et je les compare par un calcul





je garde le meilleur et je veux supprimer le deuxieme tableau pour gagner en memoire (et en plus ce sont des enormes listes)







en clair, dans mon code j'ai l'impression que ma copie et ma
suppression est fausse. Pourrize vous me proposer une version ?
j'arrive a trouver une methode de clonage ( a part dans stars wars mais
g pas la bibliotheque starwars.h )





Hell me you are my only hope !








PS: ma liste chainé est a sens unique





typedef struct elt{


MOT *valeur ;


struct elt *suiv ;


}element ;







Visual Bubble

1 réponse

Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
27 juin 2005 à 21:35
bah pour cloner:



bool Clone(element *head,element *new_head)

{

element *ptr;



ptr=(element *)malloc(sizeof(element));

if(ptr==NULL)

return false;

ptr->valeur=head->valeur;

new_head=ptr;



ptr=ptr->suiv;

head=head->suiv;



while(head)

{

ptr->suiv=(element *)malloc(sizeof(element));

if(ptr->suiv==NULL)


return false;

ptr=ptr->suiv;

ptr->valeur=head->valeur;

head=head->suiv;

}

return true;

}



çà doit marcher


bool free(element *head)

{

element *ptr=head;

element *ptr2;



while(ptr)

{

ptr2=ptr->suiv;

free((void *)ptr);

ptr=ptr2;

}

return true;

}
A m a u r y
0
Rejoignez-nous