Problème de la linéarisation de la structure de donnée
Voici un tableau à deux dimensions tel qu'il est présenté en mathématique par exemple :
Nous remarquons immédiatement qu'il s'agit d'une donnée qui possède deux dimensions. Il faut un indice de ligne et un indice de colonne pour accéder au contenu d'une case.
Or, la mémoire d'une machine est vue comme un très grand ruban d'octets, c'est une organisation linéaire avec une seule dimension puisque l'on accède à un octet à l'aide de son adresse mémoire. Ce ruban peut être vu comme un tableau à une dimension.
Il faut donc trouver une technique pour linéariser un tableau en deux dimensions afin qu'il puisse être rangé et manipulé dans un tableau à une dimension.
Nous avons deux possibilités :
-
linéarisation colonne/colonne
-
linéarisation ligne/ligne
Dans le premier cas le tableau est découpé en colonnes, et les colonnes consécutives sont rangées les unes derrière les autres. Dans le second cas le tableau est découpé en lignes, et les lignes sont rangées les unes derrière les autres. Le langage C utilise la deuxième technique.
Le découpage et l'organisation en lignes donne :
Les valeurs 7, 8, 9, 15, 16, 17 peuvent se ranger les unes à la suite des autres dans la mémoire : nous avons linéarisé le rangement du tableau.
Un tableau à deux dimension est aussi appelé matrice.