Aller au contenu

TP - Piles et Files

Dans le dossier [NSI], créez le dossier [A03-Structures_Lineaires].

Téléchargez le module TAD_ListesChaineesCirc.py qui contient une implémentation de Liste sous la forme d'une liste chaînée circulaire et placez ce module dans le dossier [A03-Structures_Lineaires].

Cette implémentation est réalisée sous la forme d'objets de la classe Liste. On récapitule les instructions à votre disposition dans le tableau ci-dessous :

Méthode/Opérations Description
L = Liste() Initialisation d'une liste vide
L.est_vide() Renvoie True si la liste est vide, False sinon.
L.inserer_en_tete(elt) Ajoute un nouvel élément au début de la liste L
L.inserer_en_dernier(elt) Ajoute un nouvel élément à la fin de la liste L
elt = L.tete() Renvoie la valeur du premier élément de la liste L
L.queue() Remplace la liste L par la liste située en queue

On ajoute une méthode de conversion de Liste en chaîne de caractères (fonction str()).

Exemple d'affichage

>>> L = Liste()
>>> for i in range(5):
...     L.inserer_en_tete(i)
>>> str(L)
'4, 3, 2, 1, 0'

Consignes

Les deux parties de TP sont indépendantes les unes des autres. Elles doivent être programmées dans des fichiers distincts.

TPA03.11 - Programmer une Pile avec une Liste

Ce TP a pour but de vous faire programmer, en POO, une structure de Pile en utilisant uniquement les méthodes proposées dans l'interface du module TAD_ListesChaineesCirc.py.

Téléchargez puis complétez le fichier « à trous » TPA03.11.py (clic droit -> [Enregistrer sous]).

Vous ferez les tests de vérification nécessaires en ajoutant une méthode d'affichage des piles (en colonne) à partir de la méthode de conversion de Liste en chaîne de caractères (fonction str()).

Exemple d'affichage

>>> P = Pile()
>>> for i in range(5):
...     P.empiler(i)
>>> P 
4
3
2
1
0
Exemple de tests
>>> P = Pile()
>>> for i in range(5):
...     P.empiler(i)
>>> P 
4
3
2
1
0
>>> P.depiler()
4
>>> P 
3
2
1
0
>>> P.empiler(5)
>>> P 
5
3
2
1
0
>>> while not P.est_vide():
...     P.depiler()
...     print(P)
...     print(P.est_vide())
3
2
1
0
False
2
1
0
False
1
0
False
0
False

True
Rappel des méthodes « de base » pour les piles

Méthode/Opérations Description
P = Pile() Initialisation d'une pile vide.
P.est_vide() Renvoie True si la pile est vide, False sinon.
P.empiler(elt) Empile un nouvel élément au sommet de la pile.
elt = P.depiler() Lorsque la pile n'est pas vide, supprime le sommet de la pile
et renvoie la valeur de ce sommet.

TPA03.12 - Programmer une File avec une Liste

Ce TP a pour but de vous faire programmer, en POO, une structure de File en utilisant uniquement les méthodes proposées dans l'interface du module TAD_ListesChaineesCirc.py.

Téléchargez puis complétez le fichier « à trous » TPA03.12.py (clic droit -> [Enregistrer sous]).

Vous ferez les tests de vérification nécessaires en ajoutant une méthode d'affichage des files (en ligne) à partir de la méthode de conversion de Liste en chaîne de caractères (fonction str()).

Exemple d'affichage

>>> F = File()
>>> for i in range(5):
...     F.enfiler(i)
>>> F 
4 -> 3 -> 2 -> 1 -> 0
Exemple de tests
>>> F = File()
>>> for i in range(5):
...     F.enfiler(i)
>>> F 
4 -> 3 -> 2 -> 1 -> 0
>>> F.defiler()
0
>>> F 
4 -> 3 -> 2 -> 1
>>> F.enfiler(5)
>>> F 
5 -> 4 -> 3 -> 2 -> 1
>>> while not F.est_vide():
...     F.defiler()
...     print(F)
...     print(F.est_vide())
5 -> 4 -> 3 -> 2
False
5 -> 4 -> 3
False
5 -> 4
False
5
False

True
Rappel des méthodes « de base » pour les files

Méthode/Opérations Description
F = File() Initialisation d'une file vide.
F.est_vide() Renvoie True si la file est vide, False sinon.
F.enfiler(elt) Enfile un nouvel élément en queue de la file.
elt = F.defiler() Lorsque la file n'est pas vide, supprime le premier élément de la file
et renvoie la valeur de cet élément.