Pb sur une classe pile

ninuko Messages postés 1 Date d'inscription vendredi 8 février 2002 Statut Membre Dernière intervention 8 février 2002 - 8 févr. 2002 à 10:01
Scarz59 Messages postés 1 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 5 décembre 2005 - 5 déc. 2005 à 13:28
Aider moi, au secour!!!! URGENT!!!!!

unit UntClasPile; { UntClasPile porteuse de la Classe pile
Cette classe permet de :
- Gerer une pile d'information de type variant
- Rajouter un element dans la liste (Empiler)
- Retirer un element dans la liste (Dépiler)
Nom Programme : UnitClasPile
Auteur :
Date création : /02/2002 }

interface
Type

// Definition de la structure SCellule
PtPile = ^SCellule; // Pointeur Pile : Pointeur sur SCellule
SCellule = record
Information : variant;
PtPrec : SCellule;
end; // Fin de la definition de le structure

CPile=Class // Attribution d'un nom à la classe

Public
// Déclaration des méthodes publiques

// Constructeur de la pile
Constructor Creer() ;

// Ajoute une nouvelle information à la pile
Procedure Empiler( Info:variant);

{ Retire une information de la pile et la transmet dans le paramètre
information, l'information est la dernière empilée
si le retrait a été réalisé sans problème, la procedure renvoie vrai
dans OK,
si le retrait n'a pas été possible (pile vide), la procédure renvoie
faux dans OK }
Procedure Depiler( Info:variant ; OK:Boolean);

End; // Fin de la section type

implementation
uses { Routines Pascal }
SysUtils,Classes,Comctrls,Dialogs ;

// Definition variable

// Constructeur de la pile
Constructor CPile.Creer();
Begin
PtPile^:=nil; // *On met le pointeur pile a vide
End; // Fin du constructeur

// Ajoute une nouvelle information à la pile
Procedure CPile.Empiler( Info : variant);
var
PtNew : PtPile ; //
Begin
New(PtNew); // On alloue de la mémoire
PtNew^.PtPrec := PtPile; //*
PtNew^.Information:=Info;
PtPile:=PtNew; // *On met le contenue de PtPile dans PtNew

End; // Fin de la procadure empiler

// Retire une information de la pile
Procedure CPile.Depiler( Info : variant; OK : Boolean);
var
PtAnc : PtPile ;
Begin
If PtPile = nil Then //* Si le pointeur pile est vide
Begin
OK := False;
End
Else
Begin
Info := PtPile^.Information;
PtAnc := PtPile; //*
PtPile := PtPile^.PtPrec; //*
Freemem(PtAnc);
OK := True;
End;
End; // Fin Procedure Depiler

end. // Fin de la classe

Merci beaucoup
:)

1 réponse

Scarz59 Messages postés 1 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 5 décembre 2005
5 déc. 2005 à 13:28
pourquoi n'utilises-tu pas une class deja toute faite dans delphi:

la TStack.

c'est une class pile avec push pour ajouter un type apres un create et pop qui renvoi des pointeurs sur le type souhaité.



tiens va voir ce fichier:

http://www.sm.u-bordeaux2.fr/cisco/cogart/salotti/pedagogie/licence3_ASD_cours.doc
et fait une recherche de Push dans ce doc il y a un exemple assez bien foutu...



j'espere repondre a tes attentes...

cordialement.

S.
0
Rejoignez-nous