Ajout TPS + Entrainements

This commit is contained in:
Simoes Lukas
2024-12-10 12:52:05 +01:00
parent 6f3e79de9d
commit f7764aa296
20 changed files with 577 additions and 30 deletions

View File

@@ -0,0 +1,80 @@
----- TP25 : Listes chaînées -----
1.
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
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.

View File

@@ -1,28 +1,100 @@
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
struct maillon {
int valeur;
struct maillon* suivant;
struct mail {
unsigned short valeur;
struct mail* suivant;
};
typedef struct mail maillon;
void creation_liste(struct maillon* liste) {
maillon* creation_liste(void) {
int i;
liste->valeur = (rand() % 888) + 111;
for (i = 0; i != 10; i++) {
struct maillon* prochain = (struct maillon*) malloc(sizeof(struct maillon*));
if (prochain == NULL) {
printf("Erreur d'allocation mémoire.\n");
maillon* p;
maillon* premier;
maillon* s;
srand(time(NULL));
premier = (maillon*) malloc(sizeof(maillon));
if (!premier) {
printf("Erreur d'allocation mémoire. (1) \n");
}
prochain->valeur = (rand() % 888) + 111;
liste->suivant = prochain;
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;
}
void retire_dernier(maillon* liste) {
maillon* p;
for (p = liste; p != NULL; p = p->suivant) {
if (p->suivant->suivant == NULL) {
/* Il faut faire pointer l'avant dernier maillon sur NULL */
p->suivant = NULL;
free(p->suivant);
}
}
printf("Succès.\n");
}
maillon* permutation_liste(maillon* liste) {
maillon* p;
maillon* temp = liste;
for (p = liste; p->suivant != NULL; p = p->suivant) {
p = p->suivant;
}
/* TODO */
liste->valeur = p->valeur;
liste->suivant = p;
return liste;
}
int main(void) {
struct maillon* liste = NULL;
srand(time(NULL));
creation_liste(liste);
maillon* liste = creation_liste();
afficher_liste(liste);
printf("Maximum de la liste : %hu\n", recherche_max(liste));
/*retire_dernier(liste);*/
/*afficher_liste(liste);*/
afficher_liste(permutation_liste(liste));
destruction_liste(liste);
return EXIT_SUCCESS;
}