Ajout TPS + Entrainements
This commit is contained in:
@@ -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.
|
||||
|
||||
|
@@ -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;
|
||||
}
|
Reference in New Issue
Block a user