« Mathc initiation/Fichiers h : x 17a2 » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
mAucun résumé des modifications
petit correction
Ligne 1 : Ligne 1 :
[[Catégorie:Mathc initiation (livre)]]
[[Catégorie:Mathc initiation (livre)]]


[[Mathc_initiation/Fichiers_h_:_x_17a]]
[[Mathc_initiation/Fichiers_h_:_x_17a|Sommaire]]





Version du 8 juillet 2021 à 22:19


Sommaire


Installer ce fichier dans votre répertoire de travail.

xset.h
utilitaire
/* ------------------------------------ */
/*  Save as :   xset.h                  */
/* ------------------------------------ */
void create_SetI(
Set *set)
{
set->size = 0;
set->head = NULL;
}
/* ------------------------------------ */
int  member_EI(
Set *set,
int  data_new)
{
Element *element_n;

 if( set_size(set) )                               /* if the set is not empty */
   {
    element_n=set_head(set);
    do
     {
      if(data_new==element_data(element_n))return(1);
     }
    while((element_n=element_next(element_n)));
   }

return(0);                                         /* set empty or new member */
}
/* ------------------------------------ */
void insert_EI(
Set   *set,
int    data_new)
{
Element *element_new;

  if(!(member_EI(set,data_new)))                   /* set empty or new member */
    {
     if((element_new=(Element *)malloc(sizeof(Element))) == NULL) exit(1);

     element_new->data = data_new;

      element_new->next = set->head;
              set->head = element_new;
     set->size++;
    }
}
/* ------------------------------------ */
int erase_prev_EI(
Set *set,
Element *element
)
{
Element  *element_old;

  if( set_size(set) )
    {
    if(element == NULL)
      {
       element_old = set->head;
         set->head = set->head->next;
      }
  else
      {
         element_old = element->next;
       element->next = element->next->next;
      }

     free(element_old);
     set->size--;
    }

return 0;
}
/* ------------------------------------ */
void erase_EI(
Set *set,
int  data)
{
Element *element_n;
Element *element_prev_n;
int      size = set_size(set);

 if( set_size(set) )
  {
   element_prev_n = NULL;
   element_n      = set_head(set);

    do{
       if( data==element_data(element_n)) break;
       element_prev_n = element_n;
       size--;
      }
    while((element_n=element_next(element_n)));

   if(!(element_n==NULL)) erase_prev_EI(set,element_prev_n);
  }
}
/* ------------------------------------ */
void erase_SetI(
Set *set)
{
Element *element_old;

  while(set_size(set)>0)
   {
    element_old = set->head;
      set->head = set->head->next;
    free(element_old);
    set->size--;
   }
}


Les noms des fonctions me semblent bien explicites. Si vous voulez étudier le code, il faudra commencer par étudier les listes en langage C. Cette librairie est juste présentée pour vous montrer des exemples d'applications mathématiques en langage C.