problem creation of liste

#include<stdio.h>
#include<stdlib.h>
typedef struct cell cell;
struct cell
{
int info;
struct cell *suivant;
};

int main()
{
    cell *P,*liste;
    int n,i;

    printf("donner le nombre d'element");
    scanf("%i",&n);

    liste=NULL;
     P=malloc(sizeof (cell));
    for (i=0;i<n;i++)
    {

        printf("donner l'element %i de la liste\n",n-i);
        scanf("%i",&(P->info));
        P->suivant=liste;
        liste=P;
printf("%i\n",liste->info);
    }
printf("%i",(liste->suivant)->info);

    for(i=0;i<n;i++)
    {
        printf("l'element %i de la liste est %i\n",i+1,liste->info);
        liste=liste->suivant;

    }

}