begin process at 2012 05 27 14:32:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CLASSE PILE UTILISANT UN TABLEAU

CLASSE PILE UTILISANT UN TABLEAU


 Description

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

Source

  • 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;
  • }
  • //---------------------------------------------------------------------------
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;
}
//---------------------------------------------------------------------------
 



 Sources du même auteur

CLASSE FILE UTILISANT UN TABLEAU
VOIE PARALLELE COUPLEUR MC 68230 IMPRIMANTE SOUS LINUX
CALCUL PUISSANCE PAR FONCTION RECURSIVE
CALCUL FACTORIEL PAR FONCTION RECURSIVE
TRI DE FICHES

 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

Commentaires et avis

Commentaire de LordBob le 22/04/2004 20:50:45

concretement, c'est quoi une pile et ca sert a quoi?

Commentaire de djl le 22/04/2004 21:39:08

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

Commentaire de morgandetoi06 le 22/04/2004 21:41:08

c est un moyen de stockage semblable à celui utilisé par un processeur: il utilise une pile (stack) pour traiter les données.

Commentaire de DeAtHCrAsH le 24/04/2004 12:36:14

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 ?

Commentaire de djl le 24/04/2004 12:46:18

oui

Commentaire de morgandetoi06 le 24/04/2004 13:11:56

yes c ça avec lecture destructive

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,406 sec (4)

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