#ifndef __SET__ #define __SET__ #define set_type char typedef struct { int n; set_type* t; } set; set* set_alloc (int); //Constructeur short set_eq (set*, set*); // test equivalence, retourne 0/1 set* set_copy (set*); //Copie short set_is_empty (set*); // test vide, retourne 0/1 short set_add_elt (set* e, int elt); //Ajoute un elt, retourne succes : 0/1 short set_rm_elt (set*e, int elt); // Supprime elt, retourne succes : 0/1 void set_empty (set*); // vide le set void set_free (set*); // destructeur //subset_list d'un ensemble E typedef struct { int set_size; // ! TAILLE DE E, sera utilisé pour les tranches de realloc int n; // nombre de sous-ensembles actuellement stockés set** t; // liste de sous-ensembles de E } subset_list; subset_list* subset_list_alloc (int); // Constructeur, param taille de E int subset_list_add (subset_list*, set*); // Ajoute un ensemble s'il n'existe pas déjà et renvoie son indice dans la liste. short subset_list_has (subset_list*, set*); // Test d'appartenance void subset_list_free (subset_list*); #endif