import java.awt.*; import javax.swing.*; import java.util.List; import java.util.Iterator; public class CouleurList implements Iterable { protected E valeur; protected CouleurList suivant; public CouleurList() { this.valeur = null; this.suivant = null; } public CouleurList(E element) { this.valeur = element; this.suivant = null; } public void add(E element) { if (this.valeur == null) { this.valeur = element; } else { CouleurList actuel = this; while (actuel.suivant != null) { actuel = actuel.suivant; } actuel.suivant = new CouleurList<>(element); } } public boolean remove(E element) { if (this.valeur == null) { return false; } // Cas 1 : suppression de la tête if (this.valeur.equals(element)) { if (this.suivant != null) { this.valeur = this.suivant.valeur; this.suivant = this.suivant.suivant; } else { // Cas spécial : un seul élément this.valeur = null; } return true; } // Cas 2 : suppression dans le reste de la liste CouleurList actuel = this; while (actuel.suivant != null) { if (actuel.suivant.valeur != null && actuel.suivant.valeur.equals(element)) { // suppression du suivant actuel.suivant = actuel.suivant.suivant; return true; } actuel = actuel.suivant; } return false; // élément non trouvé } @Override public Iterator iterator() { return new Iterateur(this); } }