Wallon
licence

Numérique et Sciences Informatiques en Terminale


TP
TP

Structures de données

Les listes



Cette approche des listes, vue l'an dernier en première, est bien sur à réviser avant de commencer !

Une liste est une structure permettant de regrouper des données et d'y accéder de façon séquentielle.
Les éléments de la liste sont ordonnés et leur place, leur rang (index) est très important .
Une liste peut évoluer : On peut lui ajourter ou retirer des données

Ci dessous des liens vers des vidéos permettant d'asseoir les connaissances :

Une liste L est composée de 2 parties : sa tête (souvent noté car), qui correspond au dernier élément ajouté à la liste, et sa queue (souvent noté cdr) qui correspond au reste de la liste. Le langage de programmation Lisp (inventé par John McCarthy en 1958) a été un des premiers langages de programmation à introduire cette notion de liste (Lisp signifie "list processing"). Voici les opérations qui peuvent être effectuées sur une liste :

  • créer une liste vide                                                          (L=vide() on a créé une liste L vide)
  • tester si une liste est vide                                                   (estVide(L) renvoie vrai si la liste L est vide)
  • ajouter un élément en tête de liste                                     (ajouteEnTete (x,L) avec L une liste et x l'élément à ajouter)
  • supprimer la tête x d'une liste L et renvoyer cette tête x         (supprEnTete(L))
  • Compter le nombre d'éléments présents dans une liste         (compte(L) renvoie le nombre d'éléments présents dans la liste L)
  • rechercher un élément dans une liste                              (recherche(e,L) renvoie l'index de l'élement recherché)
  • lire un élément dans une liste                                            (lire(i,L) renvoie l'objet se trouvant à l'index i)

La fonction cons permet d'obtenir une nouvelle liste à partir d'une liste et d'un élément (L1 = cons(x,L)). Il est possible "d'enchaîner" les cons et d'obtenir ce genre de structure : cons(x, cons(y, cons(z,L)))

Exemples :

Voici une série d'instructions (les instructions ci-dessous s'enchaînent):

  • L=vide() => on a créé une liste vide
  • estVide(L) => renvoie vrai
  • ajoutEnTete(3,L) => La liste L contient maintenant l'élément 3
  • estVide(L) => renvoie faux
  • ajoutEnTete(5,L) => la tête de la liste L correspond à 5, la queue contient l'élément 3
  • ajoutEnTete(8,L) => la tête de la liste L correspond à 8, la queue contient les éléments 3 et 5
  • t = supprEnTete(L) => la variable t vaut 8, la tête de L correspond à 5 et la queue contient l'élément 3
  • L1 = vide()
  • L2 = cons(8, cons(5, cons(3, L1))) => La tête de L2 correspond à 8 et la queue contient les éléments 3 et 5

Exercice 1

Voici une série d'instructions qui s'enchaînent, expliquez ce qui se passe à chacune des étapes :

  • L = vide()
  • ajoutEnTete(10,L)
  • ajoutEnTete(9,L)
  • ajoutEnTete(7,L)
  • L1 = vide()
  • L2 = cons(5, cons(4, cons(3, cons (2, cons(1, cons(0,L1))))))
  • lire (3,L2)
  • rechercher (5,L2)

En python

Vous avez ici une page qui parle des listes
Attention , en python, le type "liste" se présente sous forme d'un tableau dynamique ou sous forme d'une liste chainée.
Pour concevoir une liste L =[0...n], on utilise par exemple un tableau de (n+1) éléments :
Si (L[0]== 0), la liste est vide et on augmente L[0] d'une unité à chaque fois qu'on insère un élément dans cette liste.
Si (L[0]== n+1), la liste est pleine et on diminue L[0] d'une unité à chaque fois qu'on enlève un élément dans cette liste.
Pour implémenter une liste en python, on peut utiliser un code comme celui-ci :

python

Exercice 2

Recopiez ce code et testez le dans Thonny
Quel est le contenu de liste pour les lignes 26 à 32 ?





loi
loi
loi








TP
TP