Liste chaînée

ArchMat 03

Résumé du cours

Principe

Dans une liste chaînée, chaque élément :

  • prend une place libre quelconque en mémoire.
  • connaît l’emplacement de l’élément suivant.

liste liste

Dans une liste chaînée, ajouter un élément se fait en temps constant. Par contre, pour lire l’élément de rang n, la complexité est linéaire en n.

Interface

Information

Une interface est le point de communication entre la structure de données (ici la liste chaînée) et l’utilisateur (ici l’Homme).

L’interface d’une liste chaînée propose les fonctionnalités pour utiliser la structure :

  • vérifier si la liste est vide,
  • renvoyer la taille de la liste,
  • renvoyer l’élément de rang n,
  • insérer un élément.

Implémentation

La programmation orientée objet est un choix d’implémentation possible. Il n’est pas unique.

maillon maillon

class Maillon:
    """
    Crée un maillon de la liste chaînée
    """

    def __init__(self, val: int, suiv: object):
        self.valeur = val
        self.suivant = suiv
class Liste:
    """
    Crée une liste chaînée
    """

    def __init__(self):
        # selt.tete référence un Maillon
        self.tete = None

Les méthodes ajoutées à l’objet Liste implémenteront l’interface proposée.

class Liste:
    """
    Crée une liste chaînée
    """

    def __init__(self):
        # selt.tete référence un Maillon
        self.tete = None

    def est_vide(self) -> bool:
        return self.tete is None

    def ajouter(self, val: int) -> None:
        self.tete = Maillon(val, self.tete)