head(), tail() et length() sur le containerImplémenter les méthodes head(), tail() et length() sur le container Liste<E> et les tester sur la liste [10, 20, 30].
E head() : si content == null lancer new Error("Empty list"), sinon retourner content.head.Liste<E> tail() : si content == null lancer new Error("Empty list"), sinon retourner new Liste<E>(content.tail).int length() : si this.content == null retourner 0, sinon retourner 1 + this.tail().length().this.content == null est le test valide remplaçant this == null.Implémenter les méthodes head(), tail() et length() sur le container Liste<E> et les tester sur la liste [10, 20, 30].
Implémenter head() qui retourne le premier élément ou lève une erreur si la liste est vide :
E head() {
if (content == null) throw new Error("Empty list");
return content.head;
}
// Test : new Liste<>(10, new Liste<>(20, new Liste<>(30, new Liste<>()))).head() == 10
Implémenter tail() qui retourne la liste privée de son premier élément, en utilisant le 3ème constructeur interne :
Liste<E> tail() {
if (content == null) throw new Error("Empty list");
return new Liste<E>(content.tail);
}
// Test : liste [10,20,30].tail() retourne un container wrappant [20,30]
Implémenter length() de manière récursive en testant this.content == null comme cas de base :
int length() {
if (this.content == null) return 0;
return 1 + this.tail().length();
}
// Test : [10,20,30].length() == 3, new Liste<>().length() == 0
Vérifier que le test this.content == null (et non this == null) est bien le test correct dans chaque méthode :
// Récapitulatif : this != null toujours, mais this.content peut être null
Liste<Integer> vide = new Liste<>();
System.out.println(vide.length()); // 0 : this.content == null est vrai
Liste<Integer> l = new Liste<>(10, new Liste<>(20, new Liste<>(30, vide)));
System.out.println(l.length()); // 3 : this.content != null à chaque étape
Les méthodes head(), tail() et length() sur Liste<E> testent toutes this.content == null (jamais this == null) pour détecter la liste vide, ce qui est à la fois correct et compilable.
Les applications suivantes et la correction guidée sont réservées aux membres Premium
La méthode et sa première application corrigée restent en accès libre. Le Premium débloque les applications suivantes, l'aide IA et le suivi de ta maîtrise.