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) {
|
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 {
|
||||||
|
|
28
src/liste.c
28
src/liste.c
|
@ -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) {
|
||||||
|
|
Reference in a new issue