Accueil > > > GESTION D'UNE FILE PAR LES CLASSES
GESTION D'UNE FILE PAR LES CLASSES
Information sur la source
Description
Exemple de la gestion d'une File élémentaire en utilisant une classe dynamique. File de type LIFO Last In First Out = mêle procédé que la Pile avec une petite modif dans la procédure "Defiler". Ce code à été compilé avec Borland C++ 5.5 (sans Bug apparent)
Source
#include <stdio.h>
#include <iostream>
using namespace std;
template <class T> class Cl_File;
//--------------------------------------------------------
// DEBUT CLASSE Cl_Elt
//--------------------------------------------------------
template <class T>
class Cl_Elt{
private:
static int NbrElts;
public:
Cl_Elt *suivant;
T valeur;
Cl_Elt(){NbrElts++;};
~Cl_Elt(){delete suivant;NbrElts--;};
friend class Cl_File <T> ;
};//end class
//--------------------------------------------------------
// FIN CLASSE Cl_Elt
//--------------------------------------------------------
template<class T>
int Cl_Elt<T>::NbrElts = 0;
//--------------------------------------------------------
// DEBUT CLASSE Cl_File
//--------------------------------------------------------
template <class T>
class Cl_File{
private:
void Inserer(Cl_Elt <T> *);
public:
Cl_Elt<T> *pDebut;
Cl_File(){pDebut=NULL;};
~Cl_File(){delete pDebut;};
void EmFiler (const T);
void DeFiler();
void Affichage();
void TestFileVide();
int NbrElements(void){return Cl_Elt <T>::NbrElts;};
};//end class
//--------------------------------------------------------
// FIN CLASSE Cl_File
//--------------------------------------------------------
//------------------------------------------------------------------------------
// FONCTION : EmFiler
// DESCRIPTION : Création d'un Elt et Empilage dans la File
//-------------------------------------------------------------------------------
template<class T>
void Cl_File<T>::EmFiler(T val){
//Allocation memoire pour un nouveau Elément de la File.
Cl_Elt <T> * pEltTmp = new Cl_Elt <T>;
//Initialisation du pointeur pElt à NULL
pEltTmp->suivant = NULL;
//Transfert de la valeur
pEltTmp->valeur = val;
//Insérer dans la File
Inserer (pEltTmp);
}//end process
//------------------------------------------------------------------------------
// FONCTION : Inserer
// DESCRIPTION : Insertion d'un Elt dans la File
//-------------------------------------------------------------------------------
template <class T>
void Cl_File<T>::Inserer(Cl_Elt <T> *_pElt){
//Si le pElt est vide, on sort
if (!_pElt) return;
//Si la Pile vide, on lui accroche l'Elt et on sort
if (pDebut==NULL){
pDebut = _pElt;
cout << "Création réussie!" << endl;
return;
}//end if
//Création de deux pointeurs de déplacement dans la Pile et initilisation
Cl_Elt<T> * courant = pDebut;
Cl_Elt<T> * precedent = NULL;
//On se déplace à travers la Pile jusqu'a ce que courant atteint la valeur NULL
//precedent memorise l'adresse du dernier Elt
while (courant){
precedent = courant;
courant = courant->suivant;
}//end while
//Maintenant on place le nouvel Elt en fin de Pile
precedent->suivant = _pElt;
cout << "Création réussie!" << endl;
}//end process
//------------------------------------------------------------------------------
// FONCTION : DeFiler
// DESCRIPTION : Retire un élément de la File et l'affiche
//-------------------------------------------------------------------------------
template <class T>
void Cl_File<T>::DeFiler(){
//Si la File vide, on sort
if (pDebut == NULL){
cout << "File vide!" << endl;
return;
}//end if
Cl_Elt<T> * courant = pDebut;
cout << "|" << courant->valeur << "|" << endl;
pDebut = courant->suivant;
delete &courant;
}//end process
//------------------------------------------------------------------------------
// FONCTION : Affichage
// DESCRIPTION : Affiche le contenu de la File à l'écran
//-------------------------------------------------------------------------------
template <class T>
void Cl_File<T>::Affichage(){
//Si pTete différent de NULL alors il affiche le contenu de la File
if(pDebut!=NULL){
Cl_Elt<T> * courant = pDebut;
while (courant){
cout << "|" << courant->valeur;
courant = courant->suivant;
}//end while
cout << "|" << endl;
}else
cout << "File vide!" << endl;
//end if
}//end process
//------------------------------------------------------------------------------
// FONCTION : TestFileVide
// DESCRIPTION : Controle si la File est vide
//-------------------------------------------------------------------------------
template <class T>
void Cl_File<T>::TestFileVide(){
if(pDebut==NULL)
cout << "\nFile vide!" << endl;
else
cout << "\nFile non vide!" << endl;
//end if
}//end process
//------------------------------------------------------------------------------
// START PROGRAM TEST CLASS
//-------------------------------------------------------------------------------
void main(){
Cl_File <int> stack;
stack.EmFiler(5);
stack.EmFiler(10);
stack.EmFiler(7);
stack.Affichage();
stack.DeFiler();
stack.DeFiler();
stack.DeFiler();
stack.DeFiler();
cout << "Nombre Elts = " << stack.NbrElements() << endl;
}//end program
//------------------------------------------------------------------------------
// END PROGRAM TEST CLASS
//-------------------------------------------------------------------------------
Conclusion
Ceci n'est qu'un modéle élémentaire qui respecte normalement le procédé LIFO.
Historique
- 25 juillet 2006 18:21:12 :
- changement des includes
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
algo des [ par fredson ]
je recherche le programme pour trouver divers clés de décryptage avec l'algo des(cryptage)
une aide pour écrire un algo et un prog sur le nbr premiers [ par Julius Caesar ]
Bonjour, je n'arrive pas écrire l'algo et le prog de ce sujet:"Ecrivez un algo et un prog, qui affiche les nbrs premiers inferieurs à un entier n (ave
je suis desespere, algo d'incrementation de tableau [ par scorpiwolf ]
Je deviens fou, je suis en train de faire la division euclidienne avec des nombres immenses, ils sont stockés dans des tableaux. Bon bref le probleme
Algo minimax, negamax [ par Galett ]
Salut, je m'fai un ti prog en ce moment, mais G des probs avec mon algo minimax, G tester le negamax aussi et ca change po.Je recherche en fait un alg
Aidez moi !!!! [ par sebastienbro ]
Voilà, g une fonction créé en C++ avec VC++. Elle marche très bien si elle est mis dans un EXE, mais dès k'elle est ds une DLL, ca marche plus !!Avec
Algo de Cryptage [ par LordBob ]
Salut a tous, je voudrai simplement avoir kelke info pour créé un algorithme de cryptage, savoir comment ca ce passe, ce kil fo faire un peu tout ko
j'aimerais connaitre le principe de l'algo de rar [ par Odinlemage ]
Bonjour à tous...Voila mon probleme est que j'aimerais connatire le principe algorithmique de la compression rarJ'ai eut beau cherché j'ai rien trouvé
probleme de getch() et d'algo de curseur [ par kobee12 ]
J'utilise comme compilateur dev-c++.Lorsque je fais un getch(), je suis oblige de taper enter apres alors que j'aimerais juste taper une touche et qu'
inverser une matrice non carrée [ par civata ]
est ce que quelqu'un peut me dire comment on inverse une matrice non carrée ?ou plutot où je pourrais trouver un algo qui le fait, pour les matrices c
algo JPG->BMP [ par MoDDiB ]
Il n'y aurais pas un site qu'y explikerait l'algo pour transformer un jpg en bmp?? ca sré sympataoche de me dire ou ^^merci !(les sources du concours
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|