60 lines
1.6 KiB
Java
60 lines
1.6 KiB
Java
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 navigation n'est pas raisonnable
|
|
*/
|
|
public class MonBrin implements Iterator<Base>{
|
|
|
|
public MonMaillon debut;
|
|
public MonMaillon index;
|
|
//Le constructeur fabrique un brin à partir du premier maillon p;
|
|
public MonBrin(MonMaillon p){
|
|
this.debut = p;
|
|
this.index = p;
|
|
}
|
|
|
|
public MonMaillon getDebut(){
|
|
return this.debut;
|
|
}
|
|
|
|
public MonMaillon getIndex(){
|
|
return this.index;
|
|
}
|
|
|
|
// 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(){
|
|
if (this.index.suivant==null){
|
|
return false;
|
|
}
|
|
else{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Base next() {
|
|
if (this.hasNext()){
|
|
this.index = this.index.suivant;
|
|
return this.index.b;
|
|
}
|
|
else{
|
|
throw new NoSuchElementException();
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|