begin process at 2008 08 29 22:56:46
1 233 930 membres
450 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

STRUCTURE DE PILE


Information sur la source

Description

Structure de pile à l'aide d'une liste chainee

Source

  • #include<stdio.h>
  • #include<stdlib.h>
  • typedef struct maillon *pmaillon;
  • struct maillon
  • {
  • int nombre;
  • pmaillon suivant;
  • };
  • void menu();
  • void *alloue(int taille);
  • pmaillon CreeMaillon(int valeur);
  • pmaillon InsertionTete(pmaillon ptete,int valeur);
  • pmaillon Depiler(pmaillon ptete);
  • void TeteListe(pmaillon ptete);
  • void PrintListe(pmaillon ptete);
  • pmaillon ClearListe(pmaillon ptete);
  • main()
  • {
  • int choix,n;
  • pmaillon ptete=NULL;
  • do
  • {
  • menu();
  • scanf("%d",&choix);
  • switch(choix)
  • {
  • case (1) :
  • {printf("Entrez un nombre \n");
  • scanf("%d",&n);
  • ptete = InsertionTete(ptete,n);
  • break;
  • }
  • case (2) :
  • {ptete = Depiler(ptete);
  • break;
  • }
  • case (3) :
  • {PrintListe(ptete);
  • break;
  • }
  • case (4) :
  • {TeteListe(ptete);
  • break;
  • }
  • case (5) :
  • {ptete = ClearListe(ptete);
  • break;
  • }
  • }
  • }
  • while(choix!=9);
  • getch();
  • }
  • void menu()
  • {
  • printf("1. Empiler \n");
  • printf("2. Depiler \n");
  • printf("3. Imprimer la pile \n");
  • printf("4. Afficher la tete de pile \n");
  • printf("5. Vider la pile \n");
  • printf("9. Fin \n");
  • printf("Votre choix ? \n");
  • }
  • void *alloue(int taille)
  • {
  • void *p;
  • p=(void*)malloc(taille);
  • if(p==NULL)
  • {
  • printf("Erreur d allocation memoire\n");
  • exit(1);
  • }
  • else return p;
  • }
  • pmaillon CreeMaillon(int valeur)
  • {
  • pmaillon p;
  • p=(pmaillon)alloue(sizeof(struct maillon));
  • p->nombre=valeur;
  • p->suivant=NULL;
  • return p;
  • }
  • pmaillon InsertionTete(pmaillon ptete,int valeur)
  • {
  • pmaillon p;
  • p = CreeMaillon(valeur);
  • p->suivant=ptete;
  • return p;
  • }
  • pmaillon Depiler(pmaillon ptete)
  • {
  • pmaillon p;
  • if(ptete == NULL)
  • {
  • fprintf(stderr,"Pile vide ! \n");
  • getch();
  • return ptete;
  • }
  • p=ptete;
  • ptete=ptete->suivant;
  • free(p);
  • return ptete;
  • }
  • void TeteListe(pmaillon ptete)
  • {
  • if(ptete == NULL)
  • {
  • fprintf(stderr,"Pile vide ! \n");
  • getch();
  • }
  • else printf("La tete est : %d",ptete->nombre);
  • getch();
  • }
  • void PrintListe(pmaillon ptete)
  • {
  • pmaillon pcourant;
  • if(ptete == NULL)
  • {
  • fprintf(stderr,"Liste Vide !");
  • getch();
  • }
  • else
  • {
  • for(pcourant=ptete;pcourant != NULL ;pcourant=pcourant->suivant)
  • printf("%d \n",pcourant->nombre);
  • }
  • }
  • pmaillon ClearListe(pmaillon ptete)
  • {
  • pmaillon p;
  • while(ptete != NULL)
  • {
  • p=ptete;
  • ptete=ptete->suivant;
  • free(p);
  • }
  • return ptete;
  • }
#include<stdio.h>
#include<stdlib.h>

typedef struct maillon *pmaillon;
struct maillon
{
int nombre;
pmaillon suivant;
};
void menu();
void *alloue(int taille);
pmaillon CreeMaillon(int valeur);
pmaillon InsertionTete(pmaillon ptete,int valeur);
pmaillon Depiler(pmaillon ptete);
void TeteListe(pmaillon ptete);
void PrintListe(pmaillon ptete);
pmaillon ClearListe(pmaillon ptete);
main()
{
int choix,n;
pmaillon ptete=NULL;
do
      { 
      menu();
      scanf("%d",&choix);
                   switch(choix)
                   {
                    case (1) :
                    {printf("Entrez un nombre \n");
                    scanf("%d",&n);
                    ptete = InsertionTete(ptete,n);
                    break;
                    }
                    case (2) :
                    {ptete = Depiler(ptete);
                    break;
                    }
                    case (3) :
                    {PrintListe(ptete);
                    break;
                    }
                    case (4) :
                    {TeteListe(ptete);
                    break;
                    }
                    case (5) :
                    {ptete = ClearListe(ptete);
                    break;
                    }
                   }
        }
while(choix!=9);
getch();
}




void menu()
{
printf("1. Empiler \n");
printf("2. Depiler \n");
printf("3. Imprimer la pile \n");
printf("4. Afficher la tete de pile \n");
printf("5. Vider la pile \n");
printf("9. Fin \n");
printf("Votre choix ? \n");
}

void *alloue(int taille)
{
  void *p;
  p=(void*)malloc(taille);
  if(p==NULL)
  {
    printf("Erreur d allocation memoire\n");
    exit(1);
  }
  else return p;
}
pmaillon CreeMaillon(int valeur)
{
pmaillon p;
p=(pmaillon)alloue(sizeof(struct maillon));
p->nombre=valeur;
p->suivant=NULL;
return p;
}

pmaillon InsertionTete(pmaillon ptete,int valeur)
{
pmaillon p;
p = CreeMaillon(valeur);
p->suivant=ptete;
return p;
}

pmaillon Depiler(pmaillon ptete)
{
pmaillon p;
if(ptete == NULL)
    {
    fprintf(stderr,"Pile vide ! \n");
    getch();
    return ptete;
    }
p=ptete;
ptete=ptete->suivant;
free(p);
return ptete;
}
void TeteListe(pmaillon ptete)
{
if(ptete == NULL)
    {
    fprintf(stderr,"Pile vide ! \n");
    getch();
    }
else printf("La tete est : %d",ptete->nombre);
getch();
}

void PrintListe(pmaillon ptete)
{
pmaillon pcourant;
if(ptete == NULL)
    {
    fprintf(stderr,"Liste Vide !");
    getch();
    }
else
    {
    for(pcourant=ptete;pcourant != NULL ;pcourant=pcourant->suivant)
    printf("%d \n",pcourant->nombre);
    }
}

pmaillon ClearListe(pmaillon ptete)
{
pmaillon p;
while(ptete != NULL)
    {
    p=ptete;
    ptete=ptete->suivant;
    free(p);
    }
return ptete;
}


    Aucun commentaire pour le moment.

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS