73 lines
1.9 KiB
Java
73 lines
1.9 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 structuration et la navigation sont dans la même classe.
|
|
*/
|
|
public class MonBrin implements Iterator<Base>{
|
|
|
|
private MonMaillon premier;
|
|
private MonMaillon index;
|
|
/**
|
|
* Autres index pour d'autres personnes qui naviguent
|
|
*/
|
|
private MonMaillon secondaire;
|
|
private MonMaillon tertiaire;
|
|
|
|
//Le constructeur fabrique un brin à partir du premier maillon p;
|
|
public MonBrin(MonMaillon p){
|
|
this.premier = p;
|
|
this.index = p;
|
|
this.secondaire = p;
|
|
this.tertiaire = p;
|
|
}
|
|
|
|
public MonMaillon getDebut(){
|
|
return this.premier;
|
|
}
|
|
|
|
@Override
|
|
public boolean hasNext(){
|
|
return index != null;
|
|
}
|
|
|
|
@Override
|
|
public Base next() {
|
|
if(this.index == null) throw new NoSuchElementException();
|
|
|
|
Base b = index.getBase();
|
|
index = index.getSuiteMaillon();
|
|
return b;
|
|
}
|
|
|
|
public boolean hasNextSecondaire(){
|
|
return secondaire != null;
|
|
}
|
|
|
|
public Base nextSecondaire() {
|
|
if(this.secondaire == null) throw new NoSuchElementException();
|
|
|
|
Base b = secondaire.getBase();
|
|
secondaire = secondaire.getSuiteMaillon();
|
|
return b;
|
|
}
|
|
|
|
public boolean hasNextTertiaire(){
|
|
return tertiaire != null;
|
|
}
|
|
|
|
public Base nextTertiaire() {
|
|
if(this.tertiaire == null) throw new NoSuchElementException();
|
|
|
|
Base b = tertiaire.getBase();
|
|
tertiaire = tertiaire.getSuiteMaillon();
|
|
return b;
|
|
}
|
|
|
|
}
|