fix list removal of token

This commit is contained in:
Mylloon 2022-11-20 15:44:32 +01:00
parent 52841ecaac
commit 18d633b382
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 20 additions and 15 deletions

View file

@ -22,7 +22,8 @@ void ajoute_jeton_joueur(Joueur *joueur, Jeton *jeton) {
void retire_jeton_joueur(Joueur *joueur, Jeton *jeton) { void retire_jeton_joueur(Joueur *joueur, Jeton *jeton) {
Element *tmp = joueur->liste_jeton->premier; Element *tmp = joueur->liste_jeton->premier;
if (tmp->jeton == jeton) { if (tmp->jeton->pos_i == jeton->pos_i &&
tmp->jeton->pos_j == jeton->pos_j) {
joueur->liste_jeton->premier = tmp->suivant; joueur->liste_jeton->premier = tmp->suivant;
free(tmp); free(tmp);
} else { } else {

View file

@ -24,22 +24,26 @@ void ajoute_liste(Liste *liste, Element *nouveau) {
liste->premier = nouveau; liste->premier = nouveau;
} }
void supprime_liste(Element *act, Jeton *data) { void supprime_liste(Element *elem, Jeton *data) {
if (act->suivant == NULL) { Element *precedent = elem;
Element *actuel = elem;
while (actuel) {
if (actuel->jeton->pos_i == data->pos_i &&
actuel->jeton->pos_j == data->pos_j) {
precedent->suivant = actuel->suivant;
free(actuel);
return;
} else {
precedent = actuel;
actuel = actuel->suivant;
}
}
fprintf(stderr, "Élement introuvable dans la liste ("); fprintf(stderr, "Élement introuvable dans la liste (");
affiche_jeton(stderr, data); affiche_jeton(stderr, data);
fprintf(stderr, ").\n"); fprintf(stderr, ").\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
}
if (act->suivant->jeton == data) {
Element *tmp = act->suivant;
act->suivant = act->suivant->suivant;
free(tmp);
} else {
supprime_liste(act->suivant, data);
}
} }
void affiche_liste(Element *element) { void affiche_liste(Element *element) {