#include #include #include /* typedef struct Element Element; struct Element { int nombre; Element *suivant; }; typedef struct Liste Liste; struct Liste { Element *premier; }; Liste *initialisation() { Liste *liste = malloc(sizeof(*liste)); Element *element = malloc(sizeof(*element)); if (liste == NULL || element == NULL) { exit(EXIT_FAILURE); } element->nombre = 0; element->suivant = NULL; liste->premier = element; return liste; } void insertion(Liste *liste, int nvNombre) { Element *nouveau = malloc(sizeof(*nouveau)); if (liste == NULL || nouveau == NULL) { exit(EXIT_FAILURE); } nouveau->nombre = nvNombre; nouveau->suivant = liste->premier; liste->premier = nouveau; } void afficherListe(Liste *liste) { if (liste == NULL) { exit(EXIT_FAILURE); } Element *actuel = liste->premier; while (actuel != NULL) { printf("%d -> ", actuel->nombre); actuel = actuel->suivant; } printf("NULL\n"); } 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); } } */ typedef struct Element Element; struct Element { //int nombre; int x; int y; Element *suivant; }; typedef struct Liste Liste; struct Liste { int nbelements; Element *premier; }; Liste *initialisation() { Liste *liste = malloc(sizeof(*liste)); Element *element = malloc(sizeof(*element)); if (liste == NULL || element == NULL) { exit(EXIT_FAILURE); } //element->nombre = 0; 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); } int main() { Liste *maListe = initialisation(); insertion(maListe, 4 , 8); insertion(maListe, 3 , 9); insertion(maListe, 7 , 12); insertion(maListe, 10 , 15); printf("\n\n\n"); int a = ordcul(maListe); printf("%d \n",a); freelastbloc(maListe); afficherListe(maListe); freeListe(maListe); afficherListe(maListe); return 0; }