Tableaux remplis partiellement



I - Représentation

Nous avons vu qu'un tableau est un objet statique, c'est à dire que sa dimension ne peut pas être modifiée pendant l'exécution d'un programme.

Il faut donc toujours prévoir large, c'est à dire déclarer un tableau de taille suffisante pour tous les cas de figure.

Cela signifie que l'on va en général remplir les tableaux partiellement jusqu'à un certain indice définissant la fin des données.

Pour représenter un tableau rempli partiellement, il faut donc nécessairement une variable entière qui contiendra à tout moment l'indice de fin des données.

Pour fixer les idées, prenons une variable T pour le tableau et une variable N pour l'indice de fin. On aura donc les déclarations suivantes:

Const M = Nombre maximum d'éléments;
Var N : Integer;
    T : array [1..M] of Type;

Les données utiles sont stockées dans les N premiers éléments du tableaux (schéma).

Le tableau est "vide" lorsque N vaut 0 (schéma) et plein lorsque N est égal à M (schéma)


II - Adjonction d'une valeur

II- 1 Adjonction à la fin

Pour ajouter une valeur V dans un tableau rempli partiellement, le plus simple est de l'ajouter à la fin. On appelle cette opération empiler. L'élément qui suit le dernier prend la valeur V et l'indice de fin est incrémenté (schéma):

 T [N+1] := V;
 N :=  N+1;
II- 2 Insertion

Insérer une valeur dans un tableau est une opération plus complexe. Supposons que l'on souhaite insérer une valeur V à l'indice P (P ≤ N) du tableau. Il faut d'abord "faire de la place" pour cette nouvelle valeur, c'est à dire décaler toutes les valeurs entre les indices P et N, d'un cran vers la droite. La valeur V peut ensuite être affectée à l'élément d'indice P. Puis, comme on a ajouté une valeur, l'indice de fin augmente de 1 (schéma):

 For i := N DownTo P Do T[i+1] := T[i];
 T[P] := V;
 N := N+1;

III - Suppression d'un élément

III- 1 Suppression du dernier élément

Le dernier élément d'un tableau est le plus simple à supprimer, pour cela il suffit de dépiler, c'est à dire de décrémenter l'indice de fin de 1 (schéma):

 N := N - 1;
III- 2 Suppression d'un élément quelconque (différent du dernier)

Supprimer l'élément d'indice P (P < N ) signifie décaler toutes les valeurs qui suivent P d'un cran vers la gauche, puis décrémenter l'indice de fin (schéma):

 For i := P To N-1  Do T[i] := T[i+1];
 N := N-1;

IV - Notion de pile

Un tableau rempli partiellement sur lequel on ne fait que des opérations empiler et dépiler est une structure de données fondamentale de l'informatique que l'on appelle une pile (stack en anglais).

En particulier, la gestion mémoire des variables locales et des paramètres de sous-programmes utilise une pile: les valeurs des variables sont empilées lorsque l'on rentre dans le sous-programme et dépilées à la sortie.