diff --git a/TP4/entree.txt b/TP4/entree.txt index c7e894a..e168349 100644 --- a/TP4/entree.txt +++ b/TP4/entree.txt @@ -1,17 +1,34 @@ -41 -3 -29 -23 -37 -5 -59 -31 -17 -53 -11 -7 -43 13 -19 -47 2 +5 +-3 +-37 +-41 +-2 +-47 +59 +47 +-59 +-11 +-31 +43 +-53 +41 +53 +-43 +31 +-7 +-13 +3 +-5 +-19 +7 +-23 +19 +11 +-17 +37 +17 +23 +29 +-29 diff --git a/TP4/listeNonTriees.c b/TP4/listeNonTriees.c index ae3effa..2d22c81 100644 --- a/TP4/listeNonTriees.c +++ b/TP4/listeNonTriees.c @@ -10,14 +10,6 @@ struct Cellule { typedef struct Cellule Cellule; // 2.1.2 -Cellule* init_cellule(int val) { - Cellule* l; - l = malloc(sizeof(Cellule)); - l->suiv = NULL; - l->val = val; - return l; -} - void ajout_tete(Cellule** l, int val) { Cellule* p; p = malloc(sizeof(Cellule)); @@ -81,7 +73,8 @@ void desallouer2(Cellule** l) { int main() { // 2.1.7 - Cellule* l = init_cellule(42); + Cellule* l = NULL; + ajout_tete(&l, 42); ajout_tete(&l, 43); ajout_tete(&l, 40); imprimer(l); diff --git a/TP4/listeTriees.c b/TP4/listeTriees.c index 0a71cb7..d7f9db9 100644 --- a/TP4/listeTriees.c +++ b/TP4/listeTriees.c @@ -8,14 +8,6 @@ struct Cellule { }; typedef struct Cellule Cellule; -Cellule* init_cellule(int val) { - Cellule* l; - l = malloc(sizeof(Cellule)); - l->suiv = NULL; - l->val = val; - return l; -} - void ajout_tete(Cellule** l, int val) { Cellule* p; p = malloc(sizeof(Cellule)); @@ -25,14 +17,10 @@ void ajout_tete(Cellule** l, int val) { } void imprimer(Cellule* l) { - if (l == NULL) { - return; - } - while (l->suiv != NULL) { + while (l != NULL) { printf("%d\n", l->val); l = l->suiv; } - printf("%d\n", l->val); } bool est_trie(Cellule* l) { @@ -68,7 +56,7 @@ void desallouer(Cellule** l) { void inserer(Cellule** p, int val) { Cellule* l = *p; if (l == NULL) { - l = init_cellule(val); + ajout_tete(p, val); return; } while (l->suiv != NULL && l->val < val) { @@ -77,17 +65,16 @@ void inserer(Cellule** p, int val) { } if (l->val == val) { return; + } else if (l->val < val) { + p = &l->suiv; } - if (l->suiv == NULL) { - l->suiv = init_cellule(val); - } else { - ajout_tete(p, val); - } + ajout_tete(p, val); } int main() { // Création de la liste - Cellule* l = init_cellule(59); + Cellule* l = NULL; + ajout_tete(&l, 59); ajout_tete(&l, 53); ajout_tete(&l, 47); ajout_tete(&l, 43); diff --git a/TP4/listeTrieesFichier.c b/TP4/listeTrieesFichier.c index bec5f31..99c6b39 100644 --- a/TP4/listeTrieesFichier.c +++ b/TP4/listeTrieesFichier.c @@ -8,14 +8,6 @@ struct Cellule { }; typedef struct Cellule Cellule; -Cellule* init_cellule(int val) { - Cellule* l; - l = malloc(sizeof(Cellule)); - l->suiv = NULL; - l->val = val; - return l; -} - void ajout_tete(Cellule** l, int val) { Cellule* p; p = malloc(sizeof(Cellule)); @@ -25,14 +17,10 @@ void ajout_tete(Cellule** l, int val) { } void imprimer(Cellule* l) { - if (l == NULL) { - return; - } - while (l->suiv != NULL) { + while (l != NULL) { printf("%d\n", l->val); l = l->suiv; } - printf("%d\n", l->val); } bool est_trie(Cellule* l) { @@ -67,7 +55,7 @@ void desallouer(Cellule** l) { void inserer(Cellule** p, int val) { Cellule* l = *p; if (l == NULL) { - l = init_cellule(val); + ajout_tete(p, val); return; } while (l->suiv != NULL && l->val < val) { @@ -76,12 +64,10 @@ void inserer(Cellule** p, int val) { } if (l->val == val) { return; + } else if (l->val < val) { + p = &l->suiv; } - if (l->suiv == NULL) { - l->suiv = init_cellule(val); - } else { - ajout_tete(p, val); - } + ajout_tete(p, val); } int main(int argc, char* argv[]) { @@ -97,11 +83,17 @@ int main(int argc, char* argv[]) { return EXIT_FAILURE; } - Cellule* l = init_cellule(42); + Cellule* l = NULL; int val; while (fscanf(fp, "%d", &val) != EOF) { inserer(&l, val); } imprimer(l); + if (!est_trie(l)) { + printf("Erreur: La liste n'est pas correctement triée.\n"); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; }