Ciao megasors,
per modificare il valore della testa, hai due posibilità o usi:
void inserisci(nodo_t **a, int elemento)
Nota il '**' in questo modo modifichi il puntatore (e non solo il valore puntato) oppure restituisci la nuova testa con:
nodo_t * inserisci(nodo_t *a, int elemento)
Ti posto il codice corretto con la seconda soluzione (nota: Il codice che hai postato era un poco pasticciato avevi messo la funzione 'inserisci' dentro il main).
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo_s
{
int num;
struct nodo_s *prox;
} nodo_t;
nodo_t * inserisci(nodo_t *a, int elemento)
{
nodo_t *nuovo=(nodo_t *)malloc(sizeof(nodo_t));
nuovo->num=elemento;
nuovo->prox=a;
return nuovo;
}
int main(void)
{
int choice=1;
nodo_t *testa = NULL;
while(choice)
{
int k;
printf("Inserisci un elemento in lista\n");
scanf("%d",&k);
testa = inserisci(testa,k);
printf("Vuoi inseri un altro elemento ?\npremi 1 per si\npremi 0 per no\n");
scanf("%d",&choice);
}
printf("Ecco gli elementi inseriti in lista:\n");
nodo_t *temp=testa;
if(testa==NULL)
printf("Errore");
while(temp)
{
printf("%d - ",temp->num);
temp=temp->prox;
}
return 0;
}