----- TP25 : Listes chaînées ----- 1. # include # include # include struct mail { unsigned short valeur; struct mail* suivant; }; typedef struct mail maillon; maillon* creation_liste(void) { int i; maillon* p; maillon* premier; maillon* s; srand(time(NULL)); premier = (maillon*) malloc(sizeof(maillon)); if (!premier) { printf("Erreur d'allocation mémoire. (1) \n"); } premier->valeur = (rand() % 889) + 111; p = premier; for (i = 0; i != 9; i++) { s = (maillon*) malloc(sizeof(maillon)); if (!s) { printf("Erreur d'allocation mémoire. (2) \n"); } s->valeur = (rand() % 889) + 111; p->suivant = s; p = s; } return premier; } void destruction_liste(maillon* liste) { maillon* p = liste; maillon* suivant; while (p != NULL) { suivant = p->suivant; free(p); p = suivant; } printf("Destruction terminée.\n"); } void afficher_liste(maillon* liste) { maillon* p; for (p = liste; p != NULL; p = p->suivant) { printf("| %d |", p->valeur); } putchar('\n'); } unsigned short recherche_max(maillon* liste) { unsigned short maximum = liste->valeur; maillon* p; for (p = liste; p != NULL; p = p->suivant) { if (p->valeur > maximum) { maximum = p->valeur; } } return maximum; } int main(void) { maillon* liste = creation_liste(); afficher_liste(liste); printf("Maximum de la liste : %hu\n", recherche_max(liste)); destruction_liste(liste); return EXIT_SUCCESS; } 2.