Ciao a tutti ho trovato questa lista bidirezionale in rete xò ci sono diverse cose che non capisco le scrivo accanto ai vari passaggi che non ho chiari:
codice:
#include <stdio.h>
#include <malloc.h>
struct elemento
{
 int informazione;
 struct elemento *succ;
 struct elemento *prec;
};
struct elemento *inserisci();
void visualizza(struct elemento*);
main()
{
 struct elemento *lista;
 lista=inserisci();
 visualizza(lista);
 getchar();
 getchar();
}
struct elemento *inserisci()
{
 struct elemento *testa,*corpo,*piede;
 int i,n;
 printf("Inserisci il numero di elementi della lista: ");          
 scanf("%d",&n);
 testa=(struct elemento *)malloc(sizeof(struct elemento));  {Qui alloca lo spazio per la 
 testa->prec=NULL;                                                        prima informazione e dice che
 printf("Inserisci il 1%c elemento: ",167);                            il valore precedente a testa è
 scanf("%d",&testa->informazione);                                   null}
 corpo=testa;
 for(i=2;i<=n;i++)
 {
  corpo->succ=(struct elemento *)malloc(sizeof(struct elemento)); {Alloca lo spazio per gli
  (corpo->succ)->prec=corpo;                                                  elementi successivi ma 
 printf("Inserisci il %d%c elemento: ",i,167);      non capisco (corpo->succ)->prec=corpo
  scanf("%d",&corpo->informazione);
 }
 corpo->succ=NULL;
 return(testa);   
}
void visualizza(struct elemento *puntatore)
{
 printf("LISTA: ");
 while(puntatore->succ!=NULL)           {non bastava solo puntatore!=NULL??}
 {
  printf("--->%d",puntatore->informazione);
  puntatore=puntatore->succ;                     
 }
 printf("--->%d",puntatore->informazione);  {Da qui in poi non capisco perchè continua in 
 printf("--->NULL\n");                               questo modo}
 printf("LISTA: ");
 while(puntatore!=NULL)
 {
  printf("--->%d",puntatore->informazione);
  puntatore=puntatore->prec;
 }
 printf("--->NULL\n");
}