quello che ho postato è l'unica parte di codice scritta sul libro.

cmq alla fine ho risolto, prima pensavo di aggiustare quel codice sistemando il do-while sintatitcamente errato, poi ho visto che non andava bene, allora ho messo direttamente un while e tutto funziona alla grande

codice:
puntTmp = puntatoreTesta;
if (puntTmp != NULL){                           //se la lista ha degli elementi
      while (puntTmp->puntSucc!=NULL)   //è sufficiente eliminare questo do, ovviamente errato
      puntTmp = puntTmp->puntSucc;
                                                     //poi passa alla creazione del nuovo elemento
      puntTmp->puntSucc= (struct elem *) malloc (sizeof(struct elem));
      puntTmp= puntTmp->puntSucc;
      puntTmp->info = ele;
      puntTmp->puntSucc = NULL;
    }
else
{
      puntatoreTesta = (struct elem *) malloc (sizeof(struct elem));
      puntatoreTesta->info = ele;
      puntTmp->puntSucc = NULL;
}

ora credo che passerò all'ordinamento di una lista, dopo un meritato riposo

grazie a tutti voi