tas.h
#include <stdio.h>
#include "types.h"
#if !defined(__TAS_H)
#define __TAS_H
// On crée un Tas sous forme d’objet
class Tas
{
int taille ; // taille courante du tas
int taille_max ; // taille maximale du tas (déterminée par celle de tableau)
int * tableau ; // emmagasine les données du tas
int * eval ; // Ce tableau sert à l’éventuelle évaluation des données du tas si celles-ci le nécessitent
int * inverse ; // Ce tableau permet de retrouver l’indice d’un élément de tableau, si celui-ci est inversible (flag=vrai et tableau[i]<taille pour tout i
Bool flag ; // Booléen qui décide si l’on doit implémenter la fonction d’inversion du tableau
fptr compare; // pointeur vers une fonction de comparaison des éléments du tableau
Bool comparaison(int i, int j) ; // fonction de comparaison à proprement parler (utile dans le cas de l’implémentation du tableau eval)
void echange( int i, int j) ; // echange tableau[i] et tableau[j]
void descend(int i) ; // descend l’élément i dans le tas
void remonte(int i) ; // remonte l’élément i dans le tas
public :
//Constructeur
Tas (int n) ;
Tas(int * ptr=NULL, int n=0, fptr comp=NULL, int * ptr2=NULL, Bool f = faux) ; // ptr : pointeur sur ce qui sera Tableau ; n : taille du tas ; comp : fonction de comparaison des entiers ; ptr2 : tableau auxiliaire qui sera eval ; f sera flag
// Destructeur
~Tas () ;
// Méthodes externes
void SetTaille(int offset) ; // Permet d’"augmenter" la taille courante de 'offset'
int GetTaille() ; // Renvoie la taille courante du tas
int ExtrMinimum(); // Extrait le minimum (la racine) du tas, en lui conservant ses caractéristiques de tas
void Percolation(int i); // "percole" l’élément i (<=> remonte(i))
int Inverse(int i) ; // renvoie k / tableau[k]=i si tas inversible (flag = vrai)
void Tri() ; // tri le tas
} ;
#endif