Tal vez estoy simplificando demasiado esto, pero simplemente iterar la lista más pequeña y usar los últimos nodos Link
como punto de fusión.
Entonces, ¿dónde Data->Link->Link == NULL
está el punto final, dando Data->Link
como punto de fusión (al final de la lista).
EDITAR:
De acuerdo, a partir de la imagen que publicó, analice las dos listas, la más pequeña primero. Con la lista más pequeña puede mantener las referencias al siguiente nodo. Ahora, cuando analice la segunda lista, haga una comparación en la referencia para encontrar donde Reference [i] es la referencia en LinkedList [i] -> Link. Esto le dará el punto de fusión. Es hora de explicar con imágenes (superponer los valores en la imagen del OP).
Tiene una lista vinculada (las referencias se muestran a continuación):
A->B->C->D->E
Tienes una segunda lista vinculada:
1->2->
Con la lista combinada, las referencias serían las siguientes:
1->2->D->E->
Por lo tanto, mapea la primera lista "más pequeña" (ya que la lista combinada, que es lo que estamos contando tiene una longitud de 4 y la lista principal 5)
Recorra la primera lista, mantenga una referencia de referencias.
La lista contendrá las siguientes referencias Pointers { 1, 2, D, E }
.
Ahora pasamos por la 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.
Seguro, mantiene una nueva lista de punteros, pero eso no está fuera de la especificación. Sin embargo, la primera lista se analiza exactamente una vez, y la segunda lista solo se analizará completamente si no hay un punto de fusión. De lo contrario, terminará antes (en el punto de fusión).