2°) IMPLÉMENTATION
 
 LLIST->
A partir du moment où l'on se fixe l'objectif d'avoir un temps de traitement faible lorsqu'on travaille avec une liste, il devient
nécessaire de posséder très rapidement un maximum d'informations sur celle-ci, comme le nombre d'éléments qui la compose, l'adresse du premier et du dernier élément, la taille des éléments etc.

Donc le premier problème consiste à trouver un moyen d'identifier, de stocker et de retrouver très rapidement les informations sur une liste.

  1. Pour identifier une liste : J'utilise son adresse, car celle-ci est fixée par le compilateur, puis figée en mémoire de manière définitive par le système d'exploitation lors du lancement du programme.
  2. Pour stocker les informations sur une liste, j'utilise une structure contenant tout ce dont j'ai besoin pour travailler rapidement et efficacement. 
  3. Pour retrouver les informations rapidement sur une liste quelconque,  j'utilise aussi une liste (KERNEL), dont chaque élément correspond à une liste que le programmeur aura initialisée.

L'utilisation d'une liste, doublement chaînée, s'est faite tout naturellement car elle permet de simplifier certains algorithmes comme par exemple l'insertion d'un élément ou  l'inversion  d'une liste.

Le fait que le programmeur déclare sa liste de la manière suivante : LLIST *L; et non pas LLIST L; est uniquement dû au fait de ne pas faire de différence entre le premier élément déjà alloué avec les suivants qui ne le sont pas. Autrement dit, si l'on déclare LLIST *L; les fonctions feront une allocation mémoire pour le premier élément  comme pour les suivants.

 

Implémentation

Hiérarchie :

 

 

 

 

 

 

 

 

 

 

Critiques :

    En moins :

    En plus :

Connaissances :

Il n'y a pas de connaissances particulières en langage C à avoir pour pouvoir bien utiliser les listes (LLIST.C) sauf peut-être un minimum théorique sur les listes et les piles.
Par contre, une bonne connaissance du langage C et des pointeurs sera nécessaire pour quelqu'un qui désire comprendre, voire modifier ou ajouter des nouvelles fonctions.

 

PrécèdentIntroSuivant