Talvez eu esteja simplificando demais isso, mas simplesmente itere a menor lista e use os últimos nós Link
como o ponto de fusão?
Então, onde Data->Link->Link == NULL
está o ponto final, dando Data->Link
como ponto de fusão (no final da lista).
EDITAR:
Ok, a partir da imagem que você postou, você analisa as duas listas, a menor primeiro. Com a menor lista, você pode manter as referências ao nó a seguir. Agora, quando você analisa a segunda lista, faz uma comparação na referência para descobrir onde Referência [i] é a referência em LinkedList [i] -> Link. Isso dará o ponto de fusão. Hora de explicar com fotos (sobrepor os valores na foto do OP).
Você tem uma lista vinculada (referências mostradas abaixo):
A->B->C->D->E
Você tem uma segunda lista vinculada:
1->2->
Com a lista mesclada, as referências seriam as seguintes:
1->2->D->E->
Portanto, você mapeia a primeira lista "menor" (como a lista mesclada, que é o que estamos contando, tem um comprimento de 4 e a lista principal 5)
Faça um loop pela primeira lista, mantenha uma referência de referências.
A lista conterá as seguintes referências Pointers { 1, 2, D, E }
.
Vamos agora para a segunda lista:
-> A - Contains reference in Pointers? No, move on
-> B - Contains reference in Pointers? No, move on
-> C - Contains reference in Pointers? No, move on
-> D - Contains reference in Pointers? Yes, merge point found, break.
Claro, você mantém uma nova lista de indicadores, mas isso não está fora das especificações. No entanto, a primeira lista é analisada exatamente uma vez, e a segunda lista só será totalmente analisada se não houver ponto de fusão. Caso contrário, ele terminará mais cedo (no ponto de fusão).