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{ 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; } }