Otro error es que estas recorriendo la lista con el único apuntador al primero de la lista (l1), es decir los elementos anteriores se perderán.
Aqui un código que funciona, saludos...
Código C:
Ver originallista_t *UnirListas (lista_t *l1, lista_t *l2){
lista_t *p;
if (l1 == NULL){ /*Si lista1 esta vacia...*/
l1 = l2;
}
else{
if (l2 != NULL){ /*Si lista2 no esta vacia...*/
p = l1; /*Buscar ultimo nodo (p) de lista1*/
while (p->sig != NULL)
p = p->sig;
/*Ahora, se enlaza lista2 despues de ultimo (p)*/
p->sig = l2; /*ultimo (p) apunta a lista2*/
}
}
return l1; /*retorna lista1*/
}