Libére l'espace pointé pascal/delphi
Résolu/Fermé
fahim0788
Messages postés
111
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
19 décembre 2011
-
4 juil. 2008 à 15:27
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 7 juil. 2008 à 08:30
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 7 juil. 2008 à 08:30
A voir également:
- Libére l'espace pointé pascal/delphi
- Espace insécable word - Guide
- Comment liberer de l'espace sur gmail - Guide
- Turbo pascal download - Télécharger - Édition & Programmation
- Telecharger delphi 7 - Télécharger - Langages
- My pascal - Télécharger - Édition & Programmation
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 juil. 2008 à 22:11
4 juil. 2008 à 22:11
En Pascal :
new(p); pour demander de la mémoire
dispose(p); pour libérer la mémoire
new(p); pour demander de la mémoire
dispose(p); pour libérer la mémoire
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 juil. 2008 à 22:47
4 juil. 2008 à 22:47
Pour tes soucis de pile (gestion de la mémoire aujourd'hui, taille d'une pile hier...)
Voici une unité Pascal contenant quelques fonctions fondamentales sur les piles
J'espère que ça pourra t'aider (en cas de bug sue une fonction, merci de m'en informer)
Voici une unité Pascal contenant quelques fonctions fondamentales sur les piles
J'espère que ça pourra t'aider (en cas de bug sue une fonction, merci de m'en informer)
unit UnitePile; interface type Elem=integer; // par exemple Pile=^Niveau; Niveau=record e:elem; p:pile; end; procedure Decapiter(var p:Pile); // supprime le sommet de la pile procedure Supprimer(var p:Pile); // supprime toute la pile procedure Initialiser(var p:Pile); // associe à p une base de pile procedure Empiler(var p:Pile;e:Elem); // rajoute "e" au sommet de la pile procedure Depiler(var p:Pile;var e:Elem); // extrait le sommet de la pile function Sommet(p:Pile):Elem; // accède à l'élément du sommet function TaillePile(p:Pile):integer; // donne le nombre d'élément empilé implementation const ElemZero=0; // dépend de Elem, utilisé dans Initialiser procedure Decapiter(var p:Pile); var q:Pile; begin if p<>nil then begin q:=(p^).p; dispose(p); p:=q; end; end; procedure Supprimer(var p:Pile); begin if p<>nil then begin Decapiter(p); Supprimer(p); end; end; procedure Initialiser(var p:Pile); begin Supprimer(p); // nécessite que p ai déjà été affecté (nil par exemple) new(p); (p^).p:=nil; (p^).e:=ElemZero; end; procedure Empiler(var p:Pile;e:Elem); var q:Pile; begin q:=p; new(p); (p^).e:=e; (p^).p:=q; end; function Sommet(p:Pile):Elem; begin result:=(p^).e; end; procedure Depiler(var p:Pile;var e:Elem); begin e:=Sommet(p); Decapiter(p); end; function TaillePile(p:Pile):integer; begin if p=nil then result:=0 else result:=TaillePile((p^).p)+1; end; begin end.Un programme type avec une pile sera donc :
program SansNom; uses UnitePile; var p:Pile; begin p:=nil; Initialiser(p); //... Supprimer(p); end.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 juil. 2008 à 08:30
7 juil. 2008 à 08:30
J'avais initialement compilé mon unité sous Dev-Pascal 1.9.2, mais je l'ai récemment compilé sous Delphi 6 et je me suis aperçu qu'il ne compilait pas donc j'ai rectifié :
procedure Initialiser(var p:Pile); begin Supprimer(p); // bah oui, en fait Initialiser(p) sert à rien... désolé ! end; procedure Empiler(var p:Pile;e:Elem); var n:niveau; begin n.e:=e; n.p:=p; p^:=n; end;
fahim0788
Messages postés
111
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
19 décembre 2011
10
6 juil. 2008 à 14:18
6 juil. 2008 à 14:18
c'est exactement ce que j'ai besoin pour ajouter des piles au programme, merci pour votre aide.