-
- 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.
- 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.
- Pour stocker les informations sur une liste, j'utilise
une structure contenant tout ce dont j'ai besoin pour travailler rapidement
et efficacement.
- 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.
Hiérarchie :
Critiques :
En moins :
- Implique une grande rigueur dans l'implémentation des fonctions de niveau
1 et du kernel .
En plus :
- Simplification d'algorithmes.
- Possibilités d'avoir des temps de traitement courts.
- Fonctions puissantes. ( ex : tri, ensembles ).
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.