class File1: """ File implémentée sur la base d'une liste chainée simple""" def __init__(self): """Création d'une file vide.""" self.__liste = Liste() def __len__(self): """Renvoie la longueur de la file.""" return len(self.__liste) def enfiler(self, valeur): """Enfile un objet au début de la file.""" self.__liste.inserer_queue(valeur) def defiler(self): """Retire le premier objet de la file.""" if len(self.__liste) == 0: raise IndexError("File vide !") else: self.__liste.supprimer_tete() def __str__(self): """Convertis la file en une chaîne de caractères.""" chaine = "" longueur_file = len(self.__liste) for i in reversed(range(longueur_file)): if i == 0: chaine += f"{self.__liste[i]}" else: chaine += f"{self.__liste[i]} → " return chaine def __getitem__(self, index): """Renvoie l'objet demandé par rapport à son index.""" return self.__liste.__getitem__(index)
def test_supprimer_tete(): l = Liste() l._inserer_apres(5) l._inserer_apres(2, l.queue) l._inserer_apres(3, l.tete) v = l.supprimer_tete() assert v == 5 and len(l) == 2 and l.tete.valeur == 3 and l.queue.valeur == 2 assert str(l) == "3 → 2"