:: Enseignements :: Licence :: L2 :: 2008-2009 :: Structures de données ::
[LOGO]

Listes chaînées


Structure récursive de listes

Définir les types nécessaires à la gestion d'une liste chaînée d'entiers. On rappelle que leur implantation peut être illustrée par le schéma ci-dessous.

Listes simplement chaînées

  1. Écrire deux méthodes d'allocation d'une cellule de liste chaînée (qui placent dans la cellule une valeur entière passée en argument). La première, alloueUneCellule, retourne la nouvelle cellule en résultat de la fonction. La seconde, alloueCetteCellule, effectue l'allocation d'une cellule qu'elle a reçu en argument. Pour chacune des fonctions, préciser les instructions d'appel et justifier l'usage des pointeurs.
  2. Écrire une fonction libereCellule réalisant la désallocation d'une cellule.
  3. Écrire deux fonctions d'affichage d'une liste, l'une itérative et l'autre récursive.
  4. Écrire une fonction libereListe réalisant la désallocation de toutes les cellules d'une liste.
  5. Écrire une fonction insereEnTete, acceptant une liste et une valeur, et insérant une nouvelle cellule ayant cette valeur en tête de la liste.
  6. Écrire une fonction insereEnPlace qui accepte les mêmes arguments, mais qui insère la nouvelle cellule de sorte que la liste reste triée par ordre croissant des valeurs entières.
  7. Écrire une fonction recherche qui, étant données une liste et une valeur entière, retourne un pointeur sur la cellule de la liste contenant cette valeur, ou NULL si la valeur n'est pas dans la liste.
  8. Écrire une fonction supprime qui, étant données une liste et une valeur entière, supprime la première cellule de la liste contenant cette valeur. Si une telle cellule est supprimée, la fonction retourne 1, sinon elle retourne 0.