ciao , devo dirti che il codice andrebbe messo tra tag code , e che qualche moderatore te lo farà notare

per il problema , sembra che tutto sia corretto , e che tutte le funzioni facciano il loro lavoro ,
solo ,all'uscita della funzione dividi (),i puntatori lPositivi lNegativi sono nulli , ma non sembra esserci errori nella funzione io ho provato con qualche printf e tutto funziona

COME ho testato la funzione dividi() che sembra funzionare

codice:
void dividi(TLISTA *lista, TLISTA *lPositivi, TLISTA *lNegativi){
TLISTA *temp;
temp=lista;
while(temp!=NULL){
if(temp->val>=0){
lPositivi=addLista(lPositivi, temp->val);
if(lPositivi==NULL)puts("non restituito puntatore");//lPositivi non è nullo 
printf("valore %d \n" ,temp->val);
}
else{
lNegativi=addLista(lNegativi, temp->val);
printf("valore negativi %d \n" ,temp->val);
}
temp=temp->next;
}

while(lPositivi!=NULL) // i dati vengono stampati correttamente 
{
    printf(" positivi funzione %d\n",lPositivi->val);
    lPositivi=lPositivi->next;
    }
while(lNegativi!=NULL)
{
    printf(" negativi funzione %d\n",lNegativi->val);
   lNegativi= lNegativi->next;
    }
}
Quindi non so proprio perche non funziona ????