tout marche sauf le dernier
This commit is contained in:
90
TP4/stub/1Iterable/MonBrin.java
Normal file
90
TP4/stub/1Iterable/MonBrin.java
Normal file
@@ -0,0 +1,90 @@
|
||||
import java.util.Iterator;
|
||||
import java.util.NoSuchElementException;
|
||||
/**
|
||||
MonBrin code un brin d'ADN sous forme de liste simplement chaînée.
|
||||
|
||||
Plusieurs instances de MonMaillon reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base.
|
||||
|
||||
On n'utilise pas java.util et on recode tout.
|
||||
|
||||
Cette version a un problème : la structuration et la navigation sont dans la même classe.
|
||||
*/
|
||||
|
||||
/*
|
||||
public class MonBrin implements Iterator<Base>{
|
||||
|
||||
public MonBrin(MonMaillon p){
|
||||
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
|
||||
}
|
||||
|
||||
public MonMaillon getDebut(){
|
||||
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
|
||||
}
|
||||
|
||||
|
||||
// rappel : on met @Override pour dire au compilateur qu'on veut surcharger (en particulier c'est le cas quand on implémente une interface)
|
||||
// ce n'est pas nécessaire dans ce cas mais ça permet d'avoir des messages d'alerte si on se trompe (typo dans le nom de la méthode ...)
|
||||
// voir https://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why
|
||||
@Override
|
||||
public boolean hasNext(){
|
||||
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Base next() {
|
||||
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
|
||||
throw new NoSuchElementException();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
import java.util.Iterator;
|
||||
|
||||
public class MonBrin implements Iterator<Base> {
|
||||
private MonMaillon debut;
|
||||
private MonMaillon courant;
|
||||
|
||||
// Constructeur qui initialise le brin et la position courante
|
||||
public MonBrin(MonMaillon p) {
|
||||
this.debut = p;
|
||||
this.courant = p; // Initialiser courant pour le parcours
|
||||
}
|
||||
|
||||
public MonMaillon getDebut() {
|
||||
return this.debut;
|
||||
}
|
||||
|
||||
// Méthode hasNext pour vérifier s'il y a un élément suivant
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return courant != null;
|
||||
}
|
||||
|
||||
// Méthode next pour obtenir la base actuelle et avancer
|
||||
@Override
|
||||
public Base next() {
|
||||
if (!hasNext()) {
|
||||
throw new RuntimeException("No more elements in the brin.");
|
||||
}
|
||||
Base baseActuelle = courant.getBase();
|
||||
courant = courant.getSuiteMaillon(); // Avancer au maillon suivant
|
||||
return baseActuelle;
|
||||
}
|
||||
|
||||
// Méthode pour réinitialiser le parcours du brin
|
||||
public void reset() {
|
||||
this.courant = this.debut;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
MonMaillon temp = this.debut;
|
||||
while (temp != null) {
|
||||
sb.append(temp.getBase()).append(" ");
|
||||
temp = temp.getSuiteMaillon();
|
||||
}
|
||||
return sb.toString().trim();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user