Correction TP 6 - Les listes chaînées Exercice 1 Element; Liste; Liste l;maliste = &l; printf("** afficheliste() ** \n[ "); void insereunelemt(fliste L, Pelement nouveau){ 1
Exercice 2 Element; Liste; Liste l; FListe maliste = &l; void insereunelemt(fliste L, Pelement nouveau){ float moyenne(fliste L){ int som = 0, cpt = 0; cpt++; som += L->courant->x; return (som/cpt); 2
printf("liste = [ "); printf("moyenne(liste) = %.2f\n", moyenne(maliste)); Exercice 3 #include <math.h> Element; Liste; Liste l, ll; FListe maliste = &l; FListe pl= ≪ void insereunelemt(fliste L, Pelement nouveau){ printf("** afficheliste() **\n"); 3
printf("liste = [ "); void inserfinliste(fliste L, Pelement nouveau){ if (L->dernier ==NULL){ insereunelemt(l, nouveau); else{ nouveau->suivant = L->dernier->suivant; L->dernier->suivant = nouveau; void carres(fliste L, FListe Lc){ Pelement el; initliste(lc); el = (Pelement) malloc(sizeof(element)); el->x = pow(l->courant->x, 2); inserfinliste(lc, el); carres(maliste, pl); afficheliste(pl); Exercice 5 Element; Liste; 4
void insereunelemt(fliste L, Pelement nouveau){ printf("liste = [ "); void supprimepremier(fliste L){ Pelement el = L->premier; L->premier = L->premier->suivant; free(el); el=null; Liste l; FListe maliste = &l; supprimepremier(maliste); Exercice 6 Element; Liste; 5
void insereunelemt(fliste L, Pelement nouveau){ printf("liste = [ "); void supprimedernier(fliste L){ Pelement el = L->dernier; Pelement avdernier; while(l->courant->suivant->suivant!=null){ avdernier = L->courant; free(avdernier->suivant); avdernier->suivant = NULL; L->dernier = avdernier; Liste l; FListe maliste = &l; supprimedernier(maliste); Exercice 8 /* Gestion d'une file FIFO */ #define MAX 5 6
typedef struct liste * Fliste; struct element{ int n; Element; struct liste{ int taille; Liste; struct liste l; FListe file = &l; void initialiserfile(fliste P){ P = (FListe)malloc(sizeof(Liste)); P->premier = (Pelement)malloc(sizeof(Element)); P->courant = (Pelement)malloc(sizeof(Element)); P->premier = NULL; P->courant = NULL; P->taille = 0; int filevide(fliste P){ return (P->premier == NULL); void empiler(fliste P, int i){ Pelement nouveau=(pelement)malloc(sizeof(element)); nouveau->n = i; if ( filevide(p) ){ nouveau->suivant = NULL; P->premier = nouveau; else { nouveau->suivant = P->premier; P->premier = nouveau; P->taille++; void depiler(fliste P){ if (!filevide(p) ){ Pelement asupprimer; asupprimer = P->premier; P->premier = P->premier->suivant; printf("element retire de la file : %d\n", P->premier->n); free(asupprimer); asupprimer = NULL; void afficher(fliste P){ P->courant=P->premier; printf("file = ( "); while (P->courant!= NULL){ printf("%d, ",P->courant->n); P->courant = P->courant->suivant; printf(")\n"); 7
void creerfile(fliste P){ int i, tab[max]= {3,4,5,6,7; for (i = 0; i<max; i++){ empiler(file, tab[i]); int menu(){ int choix, a; printf("*** Gestion d'une file ***\n"); printf(" 1 - Initialiser\n"); printf(" 2 - afficher\n"); printf(" 3 - Empiler \n"); printf(" 4 - Depiler\n"); printf(" 5 - Quitter\n"); printf("saisissez votre choix : "); scanf("%d",&choix); switch (choix){ case 1: initialiserfile(file); printf("file initialisee\n"); break; case 2: afficher(file); break; case 3: printf("saisir entier a inserer dans la file : "); scanf("%d", &a); empiler(file, a); break; case 4: depiler(file); break; case 5: exit(0); default: printf("/!\\ Choix non valide /!\\ \n"); /* initialiserfile(file); creerfile(file); afficher(file); depiler(file); afficher(file); */ 8