Salve a tutti.
Ho questo codice che crea una lista dinamica di int e la visualizza.
Volendo eliminare un numero dalla lista, come posso fare? Devo fare in modo da poter indirizzare il puntatore del nodo precedente a quello successivo al nodo da eliminare e poi facendo un free(puntatore).
Solo non riesco a far passare l'indirizzo a cui puntare al nodo precedente 
codice:
#include <stdio.h>
#include <stdlib.h>
void crealista();
void visualizzalista();
struct elenco {
int numero;
struct elenco *pun;
};
int i,n;
struct elenco *p,*paux;
main()
{
crealista();
visualizzalista();
}
void crealista()
{
printf("Quanti numeri vuoi inserire nella lista? ");
scanf("%i",&n);
if (n==0)
p = NULL;
else
{
p = (struct elenco *)malloc(sizeof(struct elenco));
printf("\nInserisci il valore: ");
scanf("%i",&p->numero);
paux = p;
for (i=1;i<=n-1;i++)
{
paux->pun = (struct elenco *)malloc(sizeof(struct elenco));
paux = paux->pun;
printf("\nInserisci il valore: ");
scanf("%i",&paux->numero);
if (i==n-1)
paux->pun = NULL;
}
}
}
void visualizzalista()
{
system("cls");
paux = p;
while (paux != NULL)
{
printf("%i\n",paux->numero);
paux = paux->pun;
}
}
Grazie mille per eventuali consigli