Ciao a tutti volevo creare una lista doppiamente concatenata dove posso gestire oltre che a puntatore next a un puntatore prev che ritorna il valore che sta prima di un nodo.
Il mio problema è che non so come gestire il "prev". Come faccio ad assegnare i valori di prev? Vi mostro cosa ho fatto fin ora

codice:
#include <stdio.h>

struct elemento{
       int info;
       struct elemento *next;
       struct elemento *prev;
       };
       
struct elemento *crealista(){
       struct elemento *p;
       printf("Quanti elementi vuoi agigungere?\n");
       int n;
       scanf("%d",&n);
       printf("Scrivi %d elementi \n",n);
       int i;
       for(i=0; i<n; i++){
                p=(struct elemento*)calloc(sizeof(struct elemento),sizeof(struct elemento));        
                printf("scrivi l'elemento %d :",i);
                scanf("%d",&p->info);
                p->prev=(&p->info);              //QUA STO TIRANDO A CASO
                p=p->next;
                return p;
                }
                }