import java.awt.*;
import javax.swing.*;
import java.util.List;
import java.util.Iterator;

public class CouleurList<E> implements Iterable<E> {

	protected E valeur;
	protected CouleurList<E> 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<E> 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<E> 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<E> iterator() {
		return new Iterateur(this);
	}
    
}


