4 Structure - Enregistrement
4 Structure - Enregistrement
4 Structure - Enregistrement
• Un type pointeur est défini par le symbole * suivi par le nom du type de
l'objet pointé: variable p: entier;
X : *entier;
ALGORITHME ESSAI
Variable P :^ENTIER;
E : ENTIER;
DEBUT
E := 1;
P := &E;
*P := 2; (* On met dans l'objet pointé par P la valeur E :=2 )
FIN
Pile
Une pile est une liste chainée
d'informations dans laquelle :
• Un élément ne peut être ajouté
qu'au sommet de la pile,
Pop
Push • Un élément ne peut être retiré
que du sommet de la pile.
Pile
• Opérations autorisées
Les opérations autorisées avec une pile sont :
• empiler, toujours au sommet, et jusqu’à la limite de la mémoire,
• dépiler, toujours au sommet, si la pile n’est pas vide,
• vérifier si la pile est vide ou non.
Pile
• Opérations autorisées
Les opérations autorisées avec une pile sont :
• empiler, toujours au sommet, et jusqu’à la limite de la mémoire,
• dépiler, toujours au sommet, si la pile n’est pas vide,
• vérifier si la pile est vide ou non.
Pile
• Déclaration pile dynamique
Type Element = Structure
Info : chaîne de caractères;
Suivant : *Element;
Fin Structure
Type Pile = Structure
premier : *Element;
Fin Structure
Pile - Empilement
Procedure Empiler (Entrée/Sortie Tête : *Pile, Entrée Valeur : chaîne de caractères)
/* Ajout d'un élément dans une pile passée en paramètre */
Variable P : *ELEMENT /* pointeur auxiliaire */
DEBUT
1. Allouer(P) /* Réserve un espace mémoire pour le nouvel élément */
2. (*P).Info := Valeur /* stocke dans l'Info de l'élément pointé par P la valeur passée
en paramètre *
3. (*P).Suivant := (*Tête).premier /*stocke dans l'adresse du Suivant l'adresse de Tête
*/
4. (*Tête).premier := P /* Tête pointe maintenant sur le nouvel élément */
FIN
Pile - empilement
Pile - empilement
Pile - dépilement
fonction Dépiler (Entrée/Sortie Tête : *Pile) : chaine de SI Tête <> NIL et (*Tête).premier <> NIL ALORS
caractere /* la pile n'est pas vide donc on peut dépiler */
/* Suppression de l'élément au sommet de la pile passée t:= (*p).Info; /* lavaleur au sommet */
en paramètre */ (* Tête).premier := (*p).Suivant; /* P va
Variable locale pointer sur le 2ème élément de la pile qui
devient le sommet */
P : *Element /* Pointeur nécessaire pour libérer la place Désallouer(P);
occupée par l'élément dépilé */
FINSI
t : chaine de caracter; Retourner t;
DEBUT FIN
SI Tête == NIL ALORS
exit(‘erreur’);
finsi
P = (*Tête).premier;
/* Vérifier si la pile est vide */
Pile - dépilement