Liste ajouter_iter(element e, Liste L)
{
Cellule *pc, *p1 = L, *p2 = NULL;
-
pc = creer_maillon(e, NULL);
if (!L) /* liste vide */
void _visualiser_rec(Liste L, int compteur)
{
if (L != NULL) {
- /* FIXME: suboptimal printing to stdout, put this code path outside the recursion */
- if (compteur == 0)
- printf("--Debut--\n");
printf("L[%d]->value=%d\n", compteur, L->valeur);
compteur++;
_visualiser_rec(L->suivant, compteur);
- if (compteur == (longueur_rec(L) - 1))
- printf("--Fin--\n");
}
}
{
int compteur = 0;
+ printf("--Debut--\n");
_visualiser_rec(L, compteur);
+ printf("--Fin--\n");
}
bool rechercher_iter(element e, Liste L)
{
Cellule *pavant = NULL;
Cellule *pdebut = L;
+
while (L != NULL) {
/* supprimer en fin de liste */
if (L->valeur == e && L->suivant == NULL) {
free(L);
pavant->suivant = NULL;
return pdebut;
- /* supprimer au début de la liste */
+ /* supprimer au début de la liste */
} else if (L->valeur == e && pavant == NULL) {
Cellule *pcourant = L;
free(L);
return pcourant->suivant;
- /* supprimer au mileu de la liste */
+ /* supprimer au mileu de la liste */
} else if (L->valeur == e) {
Cellule *pcourant = L;
free(L);
Liste supprimer_rec(element e, Liste L)
{
- /* ... */
+ if (L == NULL) {
+ return L;
+ }
+ if (L->valeur == e) {
+ Cellule *p = L;
+ L = L->suivant;
+ free(p);
+ } else {
+ L->suivant = supprimer_rec(e, L->suivant);
+ }
+ return L;
}
Liste inverser_iter(Liste L)
L = ajouter_rec(5, L);
L = ajouter_rec(7, L);
visualiser_iter(L);
- L = supprimer_iter(1, L);
- L = supprimer_iter(4, L);
- L = supprimer_iter(2, L);
+ /* L = supprimer_iter(1, L);
+ L = supprimer_iter(4, L);
+ L = supprimer_iter(2, L); */
+ L = supprimer_rec(1, L);
+ L = supprimer_rec(4, L);
+ L = supprimer_rec(2, L);
visualiser_rec(L);
visualiser_iter(L);
- //liberer_rec(L);
- liberer_iter(L);
+ liberer_rec(L);
+ //liberer_iter(L);
/* ... */
}
/****************************************************************************/
+/* vim:noet:ts=8:sw=8:textwidth=80 */