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