60 lines
1.5 KiB
Java
60 lines
1.5 KiB
Java
public class EnsembleChaine<E> implements Ensemble<E> {
|
|
|
|
protected Cellule<E> premiere;
|
|
|
|
@Override
|
|
public int cardinal() {
|
|
int nb = 0;
|
|
Cellule<E> curseur = this.premiere;
|
|
while (curseur != null) {
|
|
nb++;
|
|
curseur = curseur.suivante;
|
|
}
|
|
return nb;
|
|
}
|
|
|
|
@Override
|
|
public boolean estVide() {
|
|
return this.premiere == null;
|
|
}
|
|
|
|
@Override
|
|
public boolean contient(E x) {
|
|
Cellule<E> curseur = this.premiere;
|
|
while (curseur != null) {
|
|
if (curseur.element == x) {
|
|
return true;
|
|
}
|
|
curseur = curseur.suivante;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void ajouter(E x) {
|
|
if (!this.contient(x)) {
|
|
Cellule<E> newCellule = new Cellule<E>(x, this.premiere);
|
|
this.premiere = newCellule;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void supprimer(E x) {
|
|
if (this.contient(x)) {
|
|
if (this.premiere.element == x) {
|
|
this.premiere = this.premiere.suivante;
|
|
} else {
|
|
Cellule<E> curseur = this.premiere;
|
|
while (curseur.suivante != null && curseur.suivante.element != x) {
|
|
curseur = curseur.suivante;
|
|
}
|
|
if (curseur.suivante != null) {
|
|
Cellule<E> save = curseur.suivante;
|
|
curseur.suivante = curseur.suivante.suivante;
|
|
save.suivante = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|