Les Listes PSI
Travaux pratiques – Listes – Piles – Files 1. Les listes
Implémenter les listes, c’est programmer une structure de données disposant des fonctions ou méthodes suivantes :
• liste_vide() : renvoie une liste vide
• ajoute(lst, element) : ajoute un élément en tête de liste
• est_vide(lst) : renvoie un booléen indiquant si la liste lst est vide
• valeur(lst) : à partir d’une suite lst = (e, lst2) renvoie la valeur e
• suite(lst) : à partir d’une suite lst = (e, lst2) …afficher plus de contenu…
Implémentation à l’aide d’un dictionnaire def cellule(e, lst): return {"hd" : e, "tl" : lst} def valeur(lst): return lst["hd"] def suite(lst): return lst["tl"] def liste_vide(): return cellule(None, None) def est_vide(lst): return (valeur(lst) is None) and (suite(lst) is None) 1.2. Implémentation paradigme objet (plutôt pour les listes mutables, encore que…)
On définit une classe Cellule et une classe Liste. class Cellule: def __init__(self, valeur, suivant): self._valeur = valeur self._suivant = suivant class Liste: def __init__(self, c): self.cellule = c def valeur(self): return …afficher plus de contenu…
2.2.1. Écrire une fonction inverser renvoyant une version inversée d’une pile.
2.2.2. Écrire une fonction copier renvoyant une copie d’une pile.
2.2.3. Écrire une méthode min de la classe Pile renvoyant le minimum d’une pile et une méthode max renvoyant le maximum.
2.2.4. À partir d’une chaine de caractères contenant des parenthèses, crochets et accolades, vérifier si le parenthésage est bon.
2.2.5. Écrire une fonction switch renvoyant une copie de la pile en inversant ses éléments du sommet et du bas. 3. Les files
3.1. Implémentation à l’aide de deux piles
On dispose de deux piles A et B, muni des fonctions habituelles, et on souhaite les utiliser comme une file. L’ajout des éléments se fait toujours dans la pile A. On retire les