Forse sto semplificando troppo, ma semplicemente iterare l'elenco più piccolo e utilizzare gli ultimi nodi Link
come punto di fusione?
Allora, dov'è Data->Link->Link == NULL
il punto finale, dando Data->Link
come punto di fusione (alla fine della lista).
MODIFICARE:
Ok, dalla foto che hai postato, analizzi i due elenchi, il più piccolo per primo. Con l'elenco più piccolo è possibile mantenere i riferimenti al nodo successivo. Ora, quando analizzi la seconda lista, fai un confronto sul riferimento per trovare dove Riferimento [i] è il riferimento su LinkedList [i] -> Link. Questo darà il punto di unione. È ora di spiegare con le immagini (sovrapporre i valori sull'immagine l'OP).
Hai un elenco collegato (riferimenti mostrati di seguito):
A->B->C->D->E
Hai una seconda lista collegata:
1->2->
Con l'elenco unito, i riferimenti sarebbero quindi i seguenti:
1->2->D->E->
Pertanto, mappi il primo elenco "più piccolo" (poiché l'elenco unito, che è quello che stiamo contando ha una lunghezza di 4 e l'elenco principale di 5)
Scorri il primo elenco, mantieni un riferimento di riferimenti.
L'elenco conterrà i seguenti riferimenti Pointers { 1, 2, D, E }
.
Passiamo ora al secondo elenco:
-> 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.
Certo, mantieni un nuovo elenco di puntatori, ma non è al di fuori delle specifiche. Tuttavia, il primo elenco viene analizzato esattamente una volta e il secondo elenco verrà analizzato completamente solo se non esiste un punto di unione. Altrimenti, finirà prima (al punto di unione).