This commit is contained in:
2025-12-10 00:14:53 +01:00
parent df9520821a
commit 41df0a89b9
31 changed files with 579 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
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 est correcte : la structuration et la navigation sont dans 2 classes séparées.
La classe MonBrin implémente Iterable au sens où elle peut générer à la demande un objet Iterator.
NB : Notez que j'implémente Iterable<Base> plutôt que Iterable qui n'était pas tout à fait propre
c'est un peu technique et c'est lié aux types génériques.
Il y a des détails ici
https://stackoverflow.com/questions/20790770/why-cant-i-assign-a-raw-type-to-a-parameterized-type-java?rq=1
*/
public class MonBrin implements Iterable<Base> {
// premier maillon du brin
private MonMaillon debut;
// Le constructeur fabrique un brin à partir du premier maillon p;
public MonBrin(MonMaillon p){
this.debut = p;
}
public MonMaillon getDebut(){
return this.debut;
}
/** Pour naviguer?
On implémente l'interface iterator de java.util ici
L'avantage c'est que c'est standard et tout le monde comprendra sans trop de mal comment la navigation fonctionne.
**/
@Override
public Iterator<Base> iterator() {
return new MonBrinIterator(this.debut);
}
}