codice:
#include <stdio.h>
#include <stdlib.h>
#define n 10

struct elemento creaLista();
void stampaLista(struct elemento *);

struct elemento
{
	int inf;
	struct elemento *ptr; 
};
struct elemento creaLista()
{
	struct elemento *p,*punt;
	int i;
	if(n==0) //Se gli elementi della lista saranno 0 creiamo una lista vuota
		p=NULL;
	else
	{
		p=(struct elemento*)malloc(sizeof(struct elemento));
		puts("Inserisci il primo valore:");
		scanf("%d",&p->inf);
		punt=p;
		for(i=2;i<=n;i++)
		{
			punt->ptr=(struct elemento*)malloc(sizeof(struct elemento));
			punt=punt->ptr;
			printf("Inserisci il %d elemento:\n",i);
			scanf("%d",&punt->inf);
		}
		punt->ptr=NULL; //fine della lista
	}
	return (*p);
}
void stampaLista(struct elemento*p)
{
	while(p!=NULL)
	{
		printf("%d",p->inf);
		puts("--->");
		p=p->ptr;
	}
}
int main(void)
{
	struct elemento *lista;
	lista=creaLista();
	stampaLista(lista);	
}
Quando compilo mi da questo errore:
codice:
48: error: incompatible types when assigning to type ‘struct elemento *’ from type ‘struct elemento’
A cosa è dovuto?