b21ad04a501b051e71c3ab463672fd364e3f9d0d
1 /********************************************************************/
2 /* Implantation d'une liste triee d'entiers */
3 /********************************************************************/
10 typedef struct cellule
{
12 struct cellule
*suivant
;
15 Liste
ajouter_iter(element e
, Liste L
)
17 Cellule
*pc
, *p1
= L
, *p2
= NULL
;
19 pc
= (Cellule
*) malloc(sizeof(Cellule
));
23 if (!L
) /* liste vide */
26 while (p1
&& (e
>= p1
->valeur
)) {
31 if (!p2
) { /* insertion en tete */
34 } else { /* insertion entre p2 et p1 */
42 int longueur_iter(Liste L
)
53 int longueur_rec(Liste L
)
56 return 1 + longueur_rec(L
->suivant
);
62 void visualiser_iter(Liste L
)
66 printf("--Debut--\n");
68 printf("L[%d]->value=%d\n", compteur
, L
->valeur
);
75 void _visualiser_rec(Liste L
, int compteur
)
79 printf("--Debut--\n");
80 printf("L[%d]->value=%d\n", compteur
, L
->valeur
);
82 _visualiser_rec(L
->suivant
, compteur
);
83 if (compteur
== (longueur_rec(L
) - 1))
89 void visualiser_rec(Liste L
)
93 _visualiser_rec(L
, compteur
);
96 bool rechercher_iter(element e
, Liste L
)
100 while (L
!= NULL
&& L
->valeur
!= e
) {
108 Liste
rechercher_rec(element e
, Liste L
)
112 Liste
ajouter_rec(element e
, Liste L
)
117 Liste
supprimer_iter(element e
, Liste L
)
122 Liste
supprimer_rec(element e
, Liste L
)
127 Liste
inverser_iter(Liste L
)
132 Liste
inverser_rec(Liste L
)
137 /****************************************************************************/
142 L
= ajouter_iter(2, L
);
143 L
= ajouter_iter(1, L
);
144 L
= ajouter_iter(3, L
);
145 printf("Saisir un entier a ajouter a la liste L\n");
147 L
= ajouter_iter(x
, L
);
148 printf("L a pour longueur %d\n", longueur_rec(L
));
151 if (rechercher_iter(3, L
))
152 printf("Element 3 est present dans L\n");
156 /****************************************************************************/