Con i puntatori non è che me la cavi bene

per l'inserimento in testa a una lista , mi dava i tuoi stessi problemi , assegnando al puntatore
passato per argomento , il nuovo nodo della lista , non me lo restituiva nel main , non so il perchè

ma io ho risolto restituendolo con un return , e funziona !

il perchè da problemi occorre che qualche esperto si faccia sentire , aspettiamo in dure

il typedef non ti da problemi , provato e funziona .


codice:
  nodo inseriscicoda(nodo il){
     int m;
     printf ("\nDigita 1 per inserire un numero, altrimenti digita 0\n");
     scanf ("%d",&m);
     while (m==1)
     {
     if (il==NULL){
     nodo p2 = NULL;
     p2= malloc (sizeof(struct numeri));
     p2->succ=NULL;
     printf ("Digita il numero da inserire:\n");
     scanf ("%d", &p2->elemento);
     p2->succ = il;
     il = p2;}
           else
           {
                 nodo tm= il;
                 while (tm->succ!=NULL)
                       tm = tm->succ;
                       
               nodo nuovo= malloc(sizeof(struct numeri));
               printf("Digita il numero\n");
               scanf("%d", &nuovo->elemento);
               nuovo->succ=NULL;
               tm->succ=nuovo;}
               printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
     scanf ("%d",&m);}
     
     return il;
     }



  nodo inseriscitesta(nodo il){
     int y;
     printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
     scanf ("%d",&y);
     while (y==1)
     {
     
     nodo p2 = NULL;
     p2= malloc (sizeof(struct numeri));
     p2->succ=NULL;
     printf ("Digita il numero da inserire:\n");
     scanf ("%d", &p2->elemento);
     p2->succ = il;
     il = p2;
     printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
     scanf ("%d",&y);}
     return il;
     }


   int main(int argc, char *argv[])
{
  int y;
  nodo il=NULL;
  il= malloc (sizeof (struct numeri));
  il->succ=NULL;
  printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
  scanf ("%d", &y);
  if (y==1)
  {printf ("Inserisci il nuemero:\n");
  scanf ("%d", &il->elemento);}
   
     il=inseriscitesta(il);
     stampalista (il);
     il=inseriscicoda(il);
     stampalista (il);