begin process at 2012 02 12 13:22:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > GESTION D'UNE FILE PAR LES CLASSES

GESTION D'UNE FILE PAR LES CLASSES


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :alorithme, algo Niveau :Débutant Date de création :28/05/2006 Date de mise à jour :25/07/2006 18:21:12 Vu :4 484

Auteur : UKR6900

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 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
  • //-------------------------------------------------------------------------------
#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

RÉCUPÉRATION DES DATES D'UN FICHIER EN CLAIR
GESTION DES SERVICES WINDOWS PAR LES API DANS UNE CLASSE
GESTION BASE DE REGISTRE (LOCAL OU DISTANTE)AVEC DES FONCTIO...
Source avec Zip CRÉATION D'UNE CLASSE CL_STRING (GESTION DES CHAÎNES)
GESTION D'UN ARBRE BINAIRE PAR LES CLASSES

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture BEAT DETECTION par barsichou
Source avec Zip Source avec une capture JEUX DU MORPION EN CONSOLE par thebroyeur
ALGO RÉSOLUTION DE SUDOKU. par mamsk00
COMPARAISON DES PERFORMANCE D'ALGORITHMES POUR OPTIMISER UN ... par fuliculi
Source avec Zip EXEMPLE D'IMPLÉMENTATION DU TYPE LISTE par ouhare

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,276 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales