diff --git a/includes/liste.h b/includes/liste.h index 64f120a..7b3dad0 100644 --- a/includes/liste.h +++ b/includes/liste.h @@ -31,6 +31,9 @@ void supprime_liste(Element *element_actuel, Jeton *jeton); /* Affiche la liste */ void affiche_liste(Element *element); +/* Renvoie une copie de la liste */ +Liste *copie_liste(Liste *liste); + /* Libère la liste en mémoire */ void free_liste(Liste *liste); diff --git a/src/liste.c b/src/liste.c index 79a40af..7f059b9 100644 --- a/src/liste.c +++ b/src/liste.c @@ -43,10 +43,24 @@ void supprime_liste(Element *act, Jeton *data) { void affiche_liste(Element *element) { if (element) { affiche_liste(element->suivant); - printf("%c%d ", element->jeton->pos_j + 'A', element->jeton->pos_i + 1); + affiche_jeton(stdout, element->jeton); + printf(" "); } } +Liste *copie_liste(Liste *liste) { + Liste *res = nouvelle_liste(); + + Element *element = liste->premier; + while (element) { + ajoute_liste(res, element); + + element = element->suivant; + } + + return res; +} + void free_liste(Liste *liste) { Element *actuel = liste->premier;