TI consiglierei di farlo così ...
void inserisci(struct nodo **pl, char dato)
{
struct nodo *s, *r, *nn=creanodo(dato);
if(*pl==NULL)
{
*pl=nn;
return;
}
if((*pl)->info >= dato)
{
s=*pl;
*pl=nn;
(*pl)->next=s;
return;
}
s=*pl;
while(s->next!=NULL)
{
if(s->next->info > dato)
{
r=s->next;
s->next=nn;
s->next->next=r;
return;
}
s=s->next;
}
s->next=nn;
s->next->next=NULL;
return;
}
int _main()
{
struct nodo *i = NULL;
inserisci(&i, 't');
inserisci(&i, 'a');
inserisci(&i, 'c');
inserisci(&i, 'w');
inserisci(&i, 'r');
...
return 0;
}