From 640d6da98b14757e865941a37a59044707ce8473 Mon Sep 17 00:00:00 2001 From: pourchot Date: Tue, 13 Dec 2022 11:28:10 +0100 Subject: [PATCH] 13 Decembre --- DEV1.1/TP15:ListesChainees/circulation.c | 82 ++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 DEV1.1/TP15:ListesChainees/circulation.c diff --git a/DEV1.1/TP15:ListesChainees/circulation.c b/DEV1.1/TP15:ListesChainees/circulation.c new file mode 100644 index 0000000..40be1f9 --- /dev/null +++ b/DEV1.1/TP15:ListesChainees/circulation.c @@ -0,0 +1,82 @@ +#include +#include +#include + +struct maillon { + unsigned short valeur; + struct maillon* suiv; +}; + +typedef struct maillon maillon; + +maillon* ajouteDebut(maillon *chaine, unsigned short entier){ + maillon *nouveauMaillon=malloc(sizeof(maillon)); + nouveauMaillon->valeur=entier; + nouveauMaillon->suiv=chaine; + return nouveauMaillon; +} + +maillon* retireDebut(maillon *chaine){ + maillon *premierMaillon=malloc(sizeof(maillon)); + maillon *nouvelleChaine=malloc(sizeof(maillon)); + premierMaillon=chaine; + nouvelleChaine=premierMaillon->suiv; + premierMaillon->suiv=NULL; + free(premierMaillon); + return nouvelleChaine; +} + +void ajouterFin(maillon *chaine, unsigned short entier){ + maillon *nouveauMaillon=malloc(sizeof(maillon)); + nouveauMaillon->valeur=entier; + nouveauMaillon->suiv=NULL; + maillon *parcourir=malloc(sizeof(maillon)); + parcourir=chaine; + while(parcourir->suiv!=NULL){ + parcourir=parcourir->suiv; + } + parcourir->suiv=nouveauMaillon; +} + +void retireFin(maillon *chaine){ + maillon *parcourir=malloc(sizeof(maillon)); + maillon *precedent=malloc(sizeof(maillon)); + precedent->suiv=NULL; + parcourir=chaine; + while(parcourir->suiv!=NULL){ + precedent=parcourir; + parcourir=parcourir->suiv; + } precedent->suiv=NULL; + free(parcourir); + free(precedent); +} + +void afficheListe(maillon *chaine){ + maillon *affichage=malloc(sizeof(maillon)); + affichage=chaine; + while(affichage->suiv!=NULL){ + printf("%hu ",affichage->valeur); + affichage=affichage->suiv; + } printf("\n\n"); + free(affichage); +} + +int main() { + int i; + maillon *liste=malloc(sizeof(maillon)); + srand(time(NULL)); + + putchar('\n'); + liste->valeur=(rand()%889)+111; + liste->suiv=NULL; + for(i=0;i<10;i++){ + unsigned short v=(rand()%889)+111; + liste=ajouteDebut(liste, v); + } printf("Les valeurs de la liste sont :\n"); + afficheListe(liste); + unsigned short v=(rand()%889)+111; + ajouterFin(liste, v); + printf("Les valeurs de la liste sont :\n"); + afficheListe(liste); +return 0; +} \ No newline at end of file