Ciao, innanzitutto vi ringrazio per i consigli. Ho preso spunto dal codice di turn24 ed ho riscritto così la funzione dividi:

codice:
void dividi(TLISTA *lista, TLISTA *lPos, TLISTA *lNeg){
  TLISTA *temp; 
  temp=lista; 
  while(temp!=NULL){ 
    if(temp->val>=0){ 
      lPos=addLista(lPos, temp->val); 
      if(lPos==NULL){ 
        puts("Puntatore non restituito!"); 
      } 
    } 
    else{ 
      lNeg=addLista(lNeg, temp->val); 
    }
    temp=temp->next; 
  } 
  printf("\n\n Lista 'lPos':\n\n"); 
  printLista(lPos); 
  printf("\n\n Lista 'lNeg':\n\n"); 
  printLista(lNeg); 
}
praticamente identica con qualche accorgimento "estetico" javascript:void(0);
la funzione funziona perfettamente.

Ho creato la funzione insABS per inserire nella lista lABS il valore assoluto di tutti i numeri presenti nella lista iniziale lInt:

codice:
TLISTA *insABS(TLISTA *lista){ 
  TLISTA *temp; 
  TLISTA *j; 
  j=NULL; 
  temp=lista; 
  while(temp!=NULL){ 
    if(temp->val<0){ 
      temp->val=-(temp->val); 
    } 
    else{ 
      temp->val=temp->val; 
    } 
    j=addLista(j, temp->val); 
    temp=temp->next; 
  } 
  return j; 
}
funzione corretta ma vorrei eliminare i duplicati e non so come fare. Qualcuno saprebbe consigliarmi?

Grazie mille