Deux façons de ranger les données
La mémoire ne connaît ni liste, ni pile, ni arbre. Elle conserve des valeurs dans des emplacements concrets. Toutes les structures de ce parcours partent de deux idées : placer les données côte à côte, ou relier des morceaux placés ailleurs.
Contigu
Non contigu
Nous utilisons ici un modèle volontairement simple : des adresses décimales fictives et des entiers de 4 octets. Ce modèle ne décrit pas tous les détails d'un ordinateur. Il suffit pour voir les copies, les décalages et les parcours que vos structures provoquent.
Repérez le comportement attendu
Cherchez-vous une valeur par position, ajoutez-vous souvent au début, ou suivez-vous surtout des relations entre objets ?Dessinez le rangement
Représentez les cases ou les nœuds avant d'analyser une opération.Comptez les gestes
Nommez les lectures, écritures, copies, décalages ou liens suivis. Le coût devient alors visible.
Contigu : Des cases qui se suivent
Un tableau réserve un bloc de cases voisines. Si sa première case commence à l'adresse 240 et qu'une case occupe 4 octets, l'adresse de l'index i vaut 240 + i × 4.
Le calcul qui remplace le parcours
240 + 3 × 4 = 252. Elle ne lit pas les index 0, 1 et 2.Force
- Une position se traduit directement en adresse.
- Les valeurs restent regroupées dans un bloc compact.
Limite
- Il faut réserver une capacité.
- Insérer au milieu oblige les voisins à se décaler.
Réponse possible
- Allouer un bloc plus grand et recopier les valeurs.
- Choisir des liens si les modifications locales dominent.
Non contigu : Des nœuds reliés
Dans une liste chaînée, chaque nœud contient une valeur et une référence vers le suivant. Les nœuds ci-dessous sont dessinés sur une ligne pour rester lisibles. En mémoire, ils peuvent se trouver à des adresses éloignées.
Une référence n'est pas l'objet
Les liens conviennent bien
- • La structure grandit sans recopier un grand bloc.
- • Vous modifiez souvent autour d'un nœud déjà trouvé.
- • L'ordre logique compte plus que l'accès par index.
Comparer les gestes réels
Dire qu'une structure est « rapide » ne suffit pas. Nommez l'opération et ce qu'elle oblige la mémoire à faire.
| Question | Cases contiguës | Nœuds reliés |
|---|---|---|
| Trouver l'élément d'index i | Coût faible Calculer son adresse, puis lire une case. | Coût élevé Partir d'un point d'entrée connu, puis suivre les liens jusqu'à la valeur recherchée. |
| Insérer au début | Coût élevé Décaler chaque valeur existante d'une case. | Coût faible Créer un nœud et changer quelques références. |
| Grandir quand l'espace manque | Coût élevé Réserver un autre bloc et recopier les valeurs. | Coût faible Allouer un nœud supplémentaire. |
Des repères, pas des règles
Quand les deux modèles se combinent
Les deux modèles peuvent coopérer. Un petit répertoire contigu garde des références vers des blocs de taille fixe, alloués séparément.
Répertoire contigu
Bloc 0
Bloc 1
Bloc 2
i = 10 → bloc 2, position 2
Trouvez le bloc
Avec des blocs de 4 valeurs, l'index 10 appartient au bloc10 / 4 = 2.Trouvez la position dans le bloc
Le reste de la division donne10 % 4 = 2.Suivez les deux accès
Lisez d'abord la référence du bloc 2 dans le répertoire, puis la position 2 dans ce bloc.
Ce n'est pas une troisième base
Vérifiez vos réflexes
Vérifiez vos réflexes
Une réponse par question. La correction apparaît tout de suite.
Continuez le parcours
Vous savez maintenant distinguer le rangement des données. La leçon suivante sépare cette question d'une autre : que doit permettre la structure ?