73 lines
1.5 KiB
Java
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);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|