#include <stdio.h> #include <stdlib.h> typedef struct liste
{
struct liste *suivant;
struct liste *precedent;
int valeur;
}LISTE;
// tu peux utiliser le paramètre "alafin" dans la procédure
// car tu ne modifies que la valeur locale (une copie sur la
// pile du pointeur "p" passé en paramètre)
void affichageFin (LISTE *alafin)
{
while (alafin != NULL)
{
printf("%d\n",alafin->valeur);
alafin=alafin->precedent;
}
}
void affichage (LISTE *fin)
{
LISTE *p;
p=fin;
while (p != NULL)
{
printf ("%d\n", p->valeur);
p = p->suivant;
}
}
LISTE *insertion (int valeur, LISTE *p)
{
LISTE *nouveau;
p->precedent = p->suivant;
nouveau = malloc(sizeof(LISTE));
if (nouveau != NULL)
{
// on vérifie tjs un pointeur alloué!!!!
// printf("%d,%d",p->precedent,p->suivant);
p->suivant = nouveau;
nouveau->suivant=NULL;
nouveau->valeur = valeur;
}
return nouveau;
}
int main ()
{
int i, n;
LISTE *tete, *p; /* *p est en fait ta fin de liste */
printf ("Taille de la liste:");
scanf ("%d", &n);
p = (LISTE*) &tete; for (i=1; i<=n; i++)
{
p = insertion (i*i, p);
}
affichage(tete);
affichagefin(p);
}


