loka
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
loka

forum de loka
 
AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
-45%
Le deal à ne pas rater :
PC Portable LG Gram 17″ Intel Evo Core i7 32 Go /1 To
1099.99 € 1999.99 €
Voir le deal

 

 pile

Aller en bas 
AuteurMessage
romain
Rang: Administrateur
romain


Nombre de messages : 346
Date d'inscription : 01/08/2004

pile Empty
MessageSujet: pile   pile EmptyMar 14 Fév à 11:12

pile.h

Code:
#ifndef PILE_H
#define PILE_H

typedef struct {
  int T[100];  /* pile contenant des floats, max 100 */
  int sommet;  /* index du sommet, -1 si pile vide */
}pile;

void init_pile(pile *p);
int est_vide(pile *p);
int est_pleine(pile *p);
void empiler(pile *p, int element);
int depiler(pile *p);

void  afficher(pile *p); /* pour les tests */
#endif


pile.c

Code:
#include <stdio.h>
#include <stdlib.h>

#include "pile.h"

void init_pile(pile *p) {
  p->sommet = -1;
}

int est_vide(pile *p) {
  return p->sommet == -1;
}

int est_pleine(pile *p) {
  return p->sommet == 244; /* notre pile contient au max 244 elements */
}

void empiler(pile *p, int e) {
  if (est_pleine(p)) {
    printf("erreur: empiler: la pile est pleine\n");
    exit(1); // a voir
  }
  p->sommet = p->sommet + 1;
  p->T[ p->sommet ] = e;
}

int depiler(pile *p) {
  int resultat;
  if (est_vide(p)) {
    printf("erreur: depiler: la pile est vide\n");
    exit(1); // a voir
  }
  resultat = p->T[p->sommet];   
  p->sommet = p->sommet-1;
  return resultat;
}

/* Affiche l'etat de la pile */
void  afficher(pile *p) {
  int i;
  printf("etat de la pile:\n");
 
  for (i=0; i <= p->sommet; i++)
    printf("\t[%d]\n", p->T[i] );
}

/* int */
/* main(int argc, char* argv[]){ */
/*  pile MaPile; */

/*  /\* on doit toujours initialiser la pile avant tout: *\/ */
/*  init_pile( &MaPile ); */
 
/*  empiler(&MaPile, 22); */
/*  empiler(&MaPile, 314); */
/*  empiler(&MaPile, 1000); */
/*  afficher(&MaPile ); */
 
/*  printf("on depile %d\n", depiler(&MaPile) ); */
/*  afficher(&MaPile); */
/*  printf("on depile %d\n", depiler(&MaPile) ); */
/*  printf("on depile %d\n", depiler(&MaPile) ); */
/*  printf("on depile %d\n", depiler(&MaPile) ); */
/*  return 1; */
/* } */
Revenir en haut Aller en bas
romain
Rang: Administrateur
romain


Nombre de messages : 346
Date d'inscription : 01/08/2004

pile Empty
MessageSujet: Re: pile   pile EmptyMar 14 Fév à 11:15

Nous pourrions aussi utiliser la librairie assert.h afin de verifier les assertions est_vide(p) (resp. est_pleine(p)) quand on depile (resp. empile)
Revenir en haut Aller en bas
 
pile
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
loka :: Informatique :: Programmation :: C et C++ :: C-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser