2
STRUCTURE DE DONNEES DYNAMIQUES
Motivations (problématique) :
supposons qu’on a souhaité gérer une liste d’objets.
la solution traditionnelle consiste à les représenter sous forme d’un tableau .donc on
va avoir les déclarations suivantes :
Type objet record
début
……
fin
var t tableau[ n ] : objet ;
on doit déclarer la taille n comme une constante
comme exemple : Soit T l’ensemble des étudiants d’un groupe donnée
l’ensemble des éléments du tableau T peuvent être ordonnées ; cette solution
présente plusieurs problèmes
1. problème de taille .
2. insertion d’un élément dans le cas ou T est triée .
3. suppression d’un élément( des trous dans T ).
solution
la solution à ces problèmes consiste à ne pas utiliser des variables statiques ( comme
les tableaux ) et à utiliser des variables dont la taille change au cours de l’exécution
du programme.
principe : réservation de l’espace mémoire si on a besoin et libération de l’espace si
on n’a pas besoin.
2) pointeur :le concept de pointeur est essentiel pour la gestion dynamique d’un
ensemble d’objet.
un pointeur est un variable dont les valeurs admissibles sont des adresses mémoires .
donc , on a besoin d’un nouveau type qui correspond au pointeur .
il n’ya pas dans les langages de programmation un nouveau type pour déclarer un
pointeur .
maisils nous donnent un autre moyen pour les déclarer
exemple : soit x ,y deux variables entiers ( int x ,y ; ), supposons qu’on va définir des
variables px , py pour pointer sur x et y.
var x , y : entier ;
px , py : ↑entier ;
en c
int x,y ;
int *px, *py ;
int t[ 10 ] ; // ( t est un pointeur reçoit la première adresse du tableau « *t le contenu
de 1er adresse équivalent t[0] »)