Questo è l'errore:
codice:
lista.c:9: error: two or more data types in declaration specifiers
E questo è il codice:
codice:
#include <stdio.h>
#include <malloc.h>

struct elemento{
    int inf;
    struct elemento *pun;
}

struct elemento *crea_lista(void);
void stampa_lista(struct elemento *);

int main()
{
   struct elemento *lista; // puntatore della lista
   lista = crea_lista(); // crea la lista
   visualizza_lista(lista); // stampa la lista
}

struct elemento *crea_lista(void){
  
  struct elemento *p, *punt;
  int i, n;
  printf("Specificare n° elementi:\n");
  scanf("%d", &n);
  if(n==0){
    p=NULL;
  }
   else {
      /* creazione primo elemento */
      p = (struct elemento *)malloc(sizeof(struct elemento));
      printf("nInserisci il primo valore: ");
      scanf("%d", & p->inf);
      punt = p;
            /* creazione elementi successivi */
      for(i=2; i<=n; i++)
      {
         punt->pun = (struct elemento *)malloc(sizeof(struct elemento));
         punt = punt->pun;
         printf("nInserisci il %d elemento: ", i);
         scanf("%d", & punt->inf);
      } // chiudo il for
      punt->pun = NULL; // marcatore fine lista
   } // chiudo l'if-else
   return(p);
} // chiudo la funzione

void stampa_lista(struct elemento *p)
{
   printf("nlista ---> ");

   /* ciclo di scansione */
   while(p != NULL)
   {
      printf("%d", p->inf); // visualizza l'informazione
      printf(" ---> ");
      p = p->pun; // scorre di un elemento
   }

   printf("NULLnn");
}
Dov'è che sbaglio? Grazie mille!