Pile: exo realisation de la primitive Depiler

Résolu/Fermé
bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018 - Modifié le 3 juil. 2018 à 20:27
bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018 - 3 juil. 2018 à 21:05
Bonsoir, j'aimerai avoir votre avis sur la partie où il y a le commentaire . Merci pour votre aide.
Voici l'exo et la correction
Enoncé

Type pile = ↑structure
DEBUT
 Info :entier
 Suiv :pile
FIN
Var sommet :pile
Procedure depiler(D/R sommet :pile
     R val :pile) 
Var p:pile
DEBUT
/*
*Ici devait-on pas Allouer  p ?
*/
Si (pileVide(sommet)=vrai) alors
 Ecrire « Impossible d’extraire »
Sinon 
 P←sommet
 Var←sommet↑.info
 Si(sommet↑.suiv = NIL)alors  /* pensez-vous pas qu'on devait mettre Si(p↑.suiv = NIL) ? */
  Initpile(sommet)
 Sinon
  Sommet ← sommet↑.suiv
 Finsi
  Liberer(p) 
Finsi
FIN

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
3 juil. 2018 à 20:37
Bonjour,

Il ne faut pas confondre la pile stockée en mémoire et les variables qui les manipule.

"Ici devait-on pas Allouer p ?
Non, il n'y a aucun intérêt à créer une nouvelle pile pour supprimer une valeur d'une pile existante.
P est une variable qui sert à référencer à une pile qui existe déjà (d'où le P←sommet) pas à en créer une nouvelle.

"pensez-vous pas qu'on devait mettre Si(p↑.suiv = NIL) ?"
Ça n'a aucune importance, puisque P←sommet, les deux variables référencent la même pile
1
bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018
3 juil. 2018 à 21:05
Merci bcp, tout s'éclaircit maintenant
0