vandepoele.e
2 years ago
5 changed files with 55 additions and 139 deletions
Binary file not shown.
@ -1,114 +0,0 @@ |
|||||
#!/usr/bin/env python3 |
|
||||
# -*- coding: utf-8 -*- |
|
||||
|
|
||||
class File_lst: |
|
||||
"""Implémentation d'une file par une liste.""" |
|
||||
def __init__(self): |
|
||||
"""Crée une file vide.""" |
|
||||
self.__file = [] |
|
||||
|
|
||||
def est_vide(self): |
|
||||
"""Indique si la file est vide.""" |
|
||||
return self.__file == [] |
|
||||
|
|
||||
def enfiler(self, valeur): |
|
||||
"""Enfile l'élément valeur.""" |
|
||||
self.__file.append(valeur) |
|
||||
|
|
||||
def defiler(self): |
|
||||
"""Défile la tête de la file et la renvoie.""" |
|
||||
return self.__file.pop(0) |
|
||||
|
|
||||
def taille(self): |
|
||||
"""Renvoie la taille de la file.""" |
|
||||
return len(self.__file) |
|
||||
|
|
||||
def tete(self): |
|
||||
"""Renvoie la tête de la file (sans la défiler).""" |
|
||||
return self.__file[0] |
|
||||
|
|
||||
def __str__(self): |
|
||||
s = "tete->" |
|
||||
for val in self.__file: |
|
||||
s += str(val) + "->" |
|
||||
return s + "queue" |
|
||||
|
|
||||
|
|
||||
class Maillon: |
|
||||
"""Un maillon d'une liste doublement chaînée.""" |
|
||||
def __init__(self, precedent, valeur, suivant): |
|
||||
self.valeur = valeur |
|
||||
self.precedent = precedent |
|
||||
self.suivant = suivant |
|
||||
|
|
||||
def __str__(self): |
|
||||
return str(self.valeur) |
|
||||
|
|
||||
|
|
||||
class File_chaine: |
|
||||
"""Implémentation d'une file par une liste doublement chaînée.""" |
|
||||
def __init__(self): |
|
||||
"""Crée une file vide.""" |
|
||||
self.__debut = self.__fin = None |
|
||||
self.__taille = 0 |
|
||||
|
|
||||
def est_vide(self): |
|
||||
"""Indique si la file est vide.""" |
|
||||
return self.__taille == 0 |
|
||||
|
|
||||
def enfiler(self, valeur): |
|
||||
"""Enfile l'élément valeur.""" |
|
||||
maillon = Maillon(self.__fin, valeur, None) |
|
||||
if self.est_vide(): |
|
||||
self.__debut = self.__fin = maillon |
|
||||
else: |
|
||||
self.__fin.suivant = maillon |
|
||||
self.__fin = maillon |
|
||||
self.__taille += 1 |
|
||||
|
|
||||
def defiler(self): |
|
||||
"""Défile la tête de la file et la renvoie.""" |
|
||||
if self.est_vide(): |
|
||||
raise IndexError("Impossible de défiler une file vide.") |
|
||||
valeur = self.__debut.valeur |
|
||||
self.__taille -= 1 |
|
||||
if self.est_vide(): |
|
||||
self.__debut = self.__fin = None |
|
||||
else: |
|
||||
self.__debut = self.__debut.suivant |
|
||||
self.__debut.precedent = None |
|
||||
return valeur |
|
||||
|
|
||||
def taille(self): |
|
||||
"""Renvoie la taille de la file.""" |
|
||||
return self.__taille |
|
||||
|
|
||||
def tete(self): |
|
||||
"""Renvoie la tête de la file (sans la défiler).""" |
|
||||
if self.est_vide(): |
|
||||
raise IndexError("Une file vide n'a pas de tête.") |
|
||||
return self.__debut.valeur |
|
||||
|
|
||||
def __str__(self): |
|
||||
s = "tete->" |
|
||||
maillon = self.__debut |
|
||||
while maillon is not None: |
|
||||
s += str(maillon) + "->" |
|
||||
maillon = maillon.suivant |
|
||||
return s + "queue" |
|
||||
|
|
||||
|
|
||||
if __name__ == "__main__": |
|
||||
f = File_lst() |
|
||||
print(f.est_vide()) |
|
||||
f.enfiler('A') |
|
||||
f.enfiler('B') |
|
||||
f.enfiler('C') |
|
||||
print(f.est_vide()) |
|
||||
print(f.tete()) |
|
||||
print(f) |
|
||||
print(f.taille()) |
|
||||
print(f.defiler()) |
|
||||
print(f.defiler()) |
|
||||
print(f.defiler()) |
|
||||
print(f.est_vide()) |
|
Loading…
Reference in new issue