Peut-être que je simplifie trop cela, mais je répète simplement la plus petite liste et j'utilise les derniers nœuds Link
comme point de fusion?
Alors, où Data->Link->Link == NULL
est le point final, en donnant Data->Link
comme point de fusion (à la fin de la liste).
ÉDITER:
D'accord, d'après la photo que vous avez postée, vous analysez les deux listes, la plus petite en premier. Avec la plus petite liste, vous pouvez conserver les références au nœud suivant. Maintenant, lorsque vous analysez la deuxième liste, vous faites une comparaison sur la référence pour trouver où Reference [i] est la référence à LinkedList [i] -> Link. Cela donnera le point de fusion. Il est temps d'expliquer avec des images (superposez les valeurs sur l'image de l'OP).
Vous avez une liste chaînée (références ci-dessous):
A->B->C->D->E
Vous avez une deuxième liste chaînée:
1->2->
Avec la liste fusionnée, les références iraient alors comme suit:
1->2->D->E->
Par conséquent, vous mappez la première liste "plus petite" (comme la liste fusionnée, ce que nous comptons, a une longueur de 4 et la liste principale 5)
Parcourez la première liste, conservez une référence de références.
La liste contiendra les références suivantes Pointers { 1, 2, D, E }
.
Nous parcourons maintenant la deuxième liste:
-> 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.
Bien sûr, vous maintenez une nouvelle liste de pointeurs, mais ce n'est pas en dehors des spécifications. Cependant, la première liste est analysée exactement une fois, et la deuxième liste ne sera entièrement analysée que s'il n'y a pas de point de fusion. Sinon, il se terminera plus tôt (au point de fusion).