Representation dynamyque |
La représentation dynamique Nous allons utiliser la notion de pointeur: un pointeur est une variable qui contient comme valeur exclusivement une adresse mémoire qui pointe sur une donnée de type standard ou structuré.
Types
pointe = ^ entier Variables
pointe pteur Le pointeur contient donc l'adresse de la variable pointée. Pour faire la différence entre adresse et entier celles-ci seront préfixées par le caractère @.
ALLOUER(pteur) Créer un bloc et mettre l’adresse dans pteur Ou la commande @ qui permet de récupérer l'adresse d'une variable. exemple: pteur <- @ calcul si calcul est de type entier.
Pteur^ <- 352 Mettre la valeur 352 dans le bloc pointé par pteur.
L'adresse NUL est l'adresse invalide. NIL ou NULL dans certains langages. ATTENTION :Seule
la commande LIBERER libère la case mémoire. La mémoire peut ne plus être
disponible. BUG IBM sur les imprimantes : à chaque impression de page , une case mémoire est utilisée mais mal libérée ce qui fait qu’au bout de 15 jours en fonction de l’utilisation , il était impossible de monter une impression en mémoire.
Les
déclarations : CONSTANTES
maxelt = 100 Définition
du type pile TYPES
pile = ^ bloc
bloc = ENREGISTREMENT
entier elt
pile eltsuivant FIN Affectation
du type pile à des variables VARIABLES
pile alcaline
On constate que la déclaration se rappelle elle même. Ce qui donne le schéma précédent. Les opérations : INITIALISER LA PILE
PROCÉDURE initpile DEBUT
pil<-nul FIN TESTER SI LA PILE EST VIDE FONCTION pilevide
(variables pile p) : BOOLEEN DEBUT
pilevide<-pil=nul
retourne(pilevide) FIN DEPILER UN ELEMENT DE LA PILE PROCÉDURE
dépiler VARIABLES
pile ucar DEBUT
SI NON pilevide(pil)
ALORS
etape1 valeur<-pil^.elt
etape2 ucar <- pil
etape3 pil <- pil^.eltsuivant
etape4 LIBERER(ucar)
SINON
ECRIRE ("la pile est vide")
valeur<-0
FINSI FIN
ETAPE 1 : on sort le premier élément de la
ETAPE 2 : on garde l’adresse du premier
ETAPE 3 : on met dans le pointeur de début de la pile l’adresse du deuxième élément .
ETAPE 4 : on libère la case du premier élément grâce à ucar.
EMPILER UN ELEMENT DANS LA PILE
PROCÉDURE empiler(variables pile pil,Entier valeur VARIABLES
pile ucar DEBUT
Etape1 ucar <-pil
etape2 ALLOUER(pil)
etape3 Pil^.elt <-valeur
etape4 Pil^.eltsuivant <-ucar FIN
ETAPE 2 : on alloue une nouvelle
zone mémoire.
ETAPE 3 : on met la valeur dans cette nouvelle zone mémoire.
ETAPE 4 : on relie la liste précédente
grâce à ucar au nouvel élément créé.
|
|