#include #include #include "libFile.h" #include // Fonctions pour projets avec file int taille(liste_t *l) { return l->nombre; } int enfiler (liste_t *l, element_t e, int taille){ element_t nouveau=malloc(taille); memcpy(nouveau,e,taille); if (l->nombre >= l->alloue) { l->contenu = realloc(l->contenu, (l->alloue+300)*sizeof(element_t)); l->alloue+=300; } l->contenu[l->nombre++]=nouveau; return 0; } int afficher(liste_t *l, void(*affichage)(element_t)) { int i; for(i=0; icontenu[i]); return 0; } int defiler(liste_t *l) { int i; if(taille(l)>=1) { free(l->contenu[0]); for(i=0; i < taille(l); i++) { l->contenu[i]=l->contenu[i+1]; } l->nombre--; } return 0; } element_t premier(liste_t *l) { return l->contenu[0]; } element_t dernier(liste_t *l) { return l->contenu[(l->nombre)-1];} element_t enieme(int x, liste_t *l) { return l->contenu[x]; } // Fonctions pour liste chainée Liste *initialisation() { Liste *liste = malloc(sizeof(*liste)); Element *element = malloc(sizeof(*element)); if (liste == NULL || element == NULL) { exit(EXIT_FAILURE); } element->x =0; element->y =0; element->suivant = NULL; liste->premier = element; liste->nbelements =0; return liste; } void insertion(Liste *liste, int x, int y) { /* Création du nouvel élément */ Element *nouveau = malloc(sizeof(*nouveau)); if (liste == NULL || nouveau == NULL) { exit(EXIT_FAILURE); } nouveau->x = x; nouveau->y = y; /* Insertion de l'élément au début de la liste */ nouveau->suivant = liste->premier; liste->premier = nouveau; liste->nbelements=liste->nbelements+1; } void afficherListe(Liste *liste) { if (liste == NULL) { exit(EXIT_FAILURE); } Element *actuel = liste->premier; while (actuel != NULL) { printf("combinaison x,y : %d , %d \n", actuel->x,actuel->y); actuel = actuel->suivant; } } void suppression(Liste *liste) { if (liste == NULL) { exit(EXIT_FAILURE); } if (liste->premier != NULL) { Element *aSupprimer = liste->premier; liste->premier = liste->premier->suivant; free(aSupprimer); } } int abstete(Liste *liste){ Element *actuel = liste->premier; return actuel->x; } int tailledelachaine(Liste *liste) { return liste->nbelements; } int ordtete(Liste *liste) { Element *actuel = liste->premier; return actuel->y; } int abscul(Liste *liste) { Element *actuel = liste->premier; int i; for(i=1;inbelements;i++) { actuel = actuel->suivant; } return actuel->x; } int ordcul(Liste *liste) { Element *actuel = liste->premier; int i; for(i=1;inbelements;i++) { actuel = actuel->suivant; } return actuel->y; } void freelastbloc(Liste *liste) { int i; Element *actuel = liste->premier; for(i=1; inbelements-1; i++){ actuel = actuel->suivant; } Element *asupprimer = actuel->suivant; free(asupprimer); actuel->suivant = NULL; liste->nbelements = liste->nbelements-1; } void freeListe(Liste *liste){ while(liste->premier!=NULL) suppression(liste); }