Files
DEV/DEV3.2/TP03/02_Chaine/CouleurList.java
Simoes Lukas 63a15fc6c7 fin tp3
2025-10-16 16:23:43 +02:00

73 lines
1.5 KiB
Java

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);
}
}