Classe pile utilisant un tableau

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 595 fois - Téléchargée 29 fois

Contenu du snippet

donc voila c un exemple de Pile (FILO)
principe: premier entré, dernier sorti

Source / Exemple :


c_pile.h:

#ifndef c_pileH
#define c_pileH

class c_pile
{
        public:
                c_pile();
                ~c_pile();
                void empiler(long quoi);
                bool depiler(long &ou);
        private:
                long *tab;
                long *tab2;
                long taillepile;
};
//---------------------------------------------------------------------------
#endif

c_pile.cpp:

#include <windows.h>
#pragma hdrstop
#include "c_pile.h"

c_pile::c_pile()
{
        taillepile=0;
        tab=new long[taillepile];
}

void c_pile::empiler(long quoi)
{
        tab2=new long[taillepile];
        for(long i=0;i<taillepile;i++)  //on recopie le tableau dans un autre
        {
                tab2[i]=tab[i];
        }
        delete tab;   //on libere l espace du tableau...
        taillepile++;
        tab=new long[taillepile]; //pour en faire un d une case de plus
        for(long i=0;i<taillepile-1;i++)  // et on recupere notre ancien tableau
        {
                tab[i]=tab2[i];
        }
        delete tab2;
        tab[taillepile-1]=quoi;
}

bool c_pile::depiler(long &ou)
{
        bool retour=false;
        if(taillepile>0)
        {
                ou=tab[taillepile-1];
                tab2=new long[taillepile-1];
                for(long i=0;i<taillepile-1;i++)  //on recopie le tableau dans un autre
                {
                        tab2[i]=tab[i];
                }
                delete tab;   //on libere l espace du tableau...
                taillepile--;
                tab=new long[taillepile]; //pour en faire un d une case de plus
                for(long i=0;i<taillepile;i++)  // et on recupere notre ancien tableau
                {
                        tab[i]=tab2[i];
                }
                delete tab2;
                retour=true;
        }
        return retour;
}

c_pile::~c_pile()
{
        delete tab;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)

application.cpp:

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <iostream>
using namespace std;
#include "c_pile.h"

int main(int argc, char* argv[])
{
        short choix;
        long temp;
        c_pile o_pile;
        do{
                cout<<"1.Empiler"<<endl;
                cout<<"2.Depiler"<<endl;
                cout<<"3.Quitter"<<endl;
                cout<<"Choix: ";
                cin>>choix;
                if(choix==1)
                {
                        cout<<"Entrez la valeur a empiler: ";
                        cin>>temp;
                        o_pile.empiler(temp);
                }
                if(choix==2)
                {
                        if(o_pile.depiler(temp))
                        cout<<"Valeur depilee :"<<temp<<endl;
                        else
                        cout<<"La pile est vide"<<endl;
                }

        }while(choix!=3);
        return 0;
}
//---------------------------------------------------------------------------

A voir également

Ajouter un commentaire

Commentaires

morgandetoi06
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1 -
yes c ça avec lecture destructive
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7 -
oui
DeAtHCrAsH
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1 -
Pour faire simple une pile est un "tableau" dans lequel les elements sont accessibles un a un ; tu ne peux pas acceder a l'element 3 sans retirer tout les elements qu'il y a apres par exemple (4,5,6,...).
Pour acceder a l'element 3 tu vas donc devoir retirer les elements 4,5,6,... D'ou le "empiler" et "depiler".

C'est ca non ?
morgandetoi06
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1 -
c est un moyen de stockage semblable à celui utilisé par un processeur: il utilise une pile (stack) pour traiter les données.
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7 -
un conteneur, comme une liste ou un tableau

la stl fournit std::stack pour ca

dans une pile tu insert des element en faisant empilant(push), et tu recupere en depilant (pop), c'est aussi simple que ca

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.