1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
   |  
#include <stdio.h>
#include <stdlib.h>
#include <memoire.h>
#include "tas.h"
 
#define BLOC 4
 
 
struct tas{
 
  int dernier;
  int taille_physique;
  int *arbreBinaire;
};
 
typedef struct tas *tas;
 
tas
creerTas(void){
 
  tas tas_cree=memoire_allouer(sizeof(struct tas));
 
  tas_cree->dernier=0;
  tas_cree->taille_physique=BLOC;
  tas_cree->arbreBinaire=memoire_allouer(BLOC*sizeof(int));
 
  return tas_cree;
}
 
void 
libererTas(tas T)
{
  memoire_liberer(T->arbreBinaire);
  memoire_liberer(T);
}
 
void
agrandirTas(tas T)
{
  while(T->dernier >= T->taille_physique)
    T->taille_physique += BLOC;
  memoire_reallouer(T->arbreBinaire, T->taille_physique *sizeof(T->arbreBinaire));
}
 
void
insererValeur(tas T, int valeur)
{
  if(T->dernier >= T->taille_physique)
    agrandirTas(T);
 
  T->arbreBinaire[T->dernier]=valeur;
  T->dernier=(T->dernier)+1;
  /*T->arbreBinaire[T->dernier]=valeur;*/
}
 
void
afficheTas(tas T)
{
  int nombre_element=T->dernier;
  for (int i=0; i < nombre_element; i++)
    printf("%d ", T->arbreBinaire[i]);
  printf("\n");
}
 
 
int
main(int argc, char * argv[])
{
  tas T=creerTas();
 
  insererValeur(T,5);
  insererValeur(T,7);
  insererValeur(T,5);
  insererValeur(T,7);
  insererValeur(T,5);
  insererValeur(T,7);
  insererValeur(T,5);
  insererValeur(T,7);
  insererValeur(T,5);
  insererValeur(T,7);
  insererValeur(T,5);
  insererValeur(T,7);
 
  afficheTas(T);
 
  printf("Taille physique= %d \n", T->taille_physique);
 
  libererTas(T);
 
  return EXIT_SUCCESS;
 
} | 
Partager