Aller au contenu principal

Les structures linéaires

Les structures linéaires sont des structures de données dont les éléments sont placés les uns derrière les autres, à la manière d'une ligne. On distingue 3 nouvelles structures en Terminale NSI :

  • Les listes chaînées;
  • Les piles ;
  • Les files.

Chacune de ces structures va pouvoir être modélisée par une classe, et vont avoir un ensemble de méthodes similaires.

Point histoire

Les listes sont à la base du langage LISP (List Processing) datant de 1958, utilisant les listes pour représenter des expressions arithmétiques (appelée S-expressions).
L'expression : 5 * (7 + 3) donnerait en LISP : (* 5 (+ 7 3 ) )

Les listes, piles et files vont avoir la même structure de données :

  • Une tête représentée par une valeur ;
  • Un reste représentant le reste de la structure.

Le reste de la structure va également posséder une tête et un reste, qui lui-même possédera une tête et un reste ... Jusqu'à atteindre le bout de la structure, représenté par un reste vide (None en python).

Liste chaînée

Les listes chaînées sont des cellules contenant pour chacune d'elle la valeur qu'elle est censée contenir, et un pointeur menant à la cellule suivante :

Primitives de la structure :

Crée et retourne une liste vide :

L = vide()

Pile

C'est une structure dont on ne peut manipuler que le premier élément. Pour manipuler le second, il faut sortir le premier.

LIFO

La structure se base sur le concept du LIFO (Last In First Out), c'est-à-dire Dernier Entré Premier Sorti.

On reprend le concept d'une pile d'assiettes pour schématiser la structure :

  • On ne manipule que l'assiette au sommet de la pile.
  • Si l'on souhaite prendre la dernière assiette, il faut retirer une par une les précédentes.
  • Si l'on doit rajouter une assiette à la pile, elle se place au sommet.

Primitives de la structure :

Crée et retourne une pile vide :

P = vide()

File

C'est une structure dont on ne peut manipuler que le plus vieil élément. Pour manipuler le second plus vieux, il faut sortir le plus vieux.

FIFO

La structure se base sur le concept du FIFO (First In First Out), c'est-à-dire Premier Entré Premier Sorti.

On reprend le concept d'une file d'attente (supermarché, etc...) pour schématiser la structure :

  • La première personne à la caisse est la première à passer ;
  • Si des personnes arrivent dans la file, elles sont placées les unes derrière les autres ;
  • La dernière personne à rentrer dans la file est donc la dernière à passer.

Primitives de la structure :

Crée et retourne une file vide :

F = vide()