fix list removal of token
This commit is contained in:
parent
52841ecaac
commit
18d633b382
2 changed files with 20 additions and 15 deletions
|
@ -22,7 +22,8 @@ void ajoute_jeton_joueur(Joueur *joueur, Jeton *jeton) {
|
|||
|
||||
void retire_jeton_joueur(Joueur *joueur, Jeton *jeton) {
|
||||
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;
|
||||
free(tmp);
|
||||
} else {
|
||||
|
|
32
src/liste.c
32
src/liste.c
|
@ -24,22 +24,26 @@ void ajoute_liste(Liste *liste, Element *nouveau) {
|
|||
liste->premier = nouveau;
|
||||
}
|
||||
|
||||
void supprime_liste(Element *act, Jeton *data) {
|
||||
if (act->suivant == NULL) {
|
||||
fprintf(stderr, "Élement introuvable dans la liste (");
|
||||
affiche_jeton(stderr, data);
|
||||
fprintf(stderr, ").\n");
|
||||
exit(EXIT_FAILURE);
|
||||
void supprime_liste(Element *elem, Jeton *data) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
if (act->suivant->jeton == data) {
|
||||
Element *tmp = act->suivant;
|
||||
act->suivant = act->suivant->suivant;
|
||||
|
||||
free(tmp);
|
||||
} else {
|
||||
supprime_liste(act->suivant, data);
|
||||
}
|
||||
fprintf(stderr, "Élement introuvable dans la liste (");
|
||||
affiche_jeton(stderr, data);
|
||||
fprintf(stderr, ").\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
void affiche_liste(Element *element) {
|
||||
|
|
Reference in a new issue