587cac341053de858d7805beec069d669232dddc
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
)
101 if (L
->valeur
== e
) {
110 Liste
rechercher_rec(element e
, Liste L
)
114 Liste
ajouter_rec(element e
, Liste L
)
119 Liste
supprimer_iter(element e
, Liste L
)
124 Liste
supprimer_rec(element e
, Liste L
)
129 Liste
inverser_iter(Liste L
)
134 Liste
inverser_rec(Liste L
)
139 /****************************************************************************/
144 L
= ajouter_iter(2, L
);
145 L
= ajouter_iter(1, L
);
146 L
= ajouter_iter(3, L
);
147 L
= ajouter_iter(4, L
);
148 printf("Saisir un entier a chercher dans la liste L\n");
150 printf("L a pour longueur %d\n", longueur_rec(L
));
153 if (rechercher_iter(x
, L
))
154 printf("L'element %d est present dans L\n", x
);
156 printf("L'element %d n'est pas present dans L\n", x
);
160 /****************************************************************************/