हो सकता है कि मैं इसे सरल कर रहा हूं, लेकिन बस छोटी से छोटी सूची को पुनरावृत्त करना और Link
विलय के बिंदु के रूप में अंतिम नोड्स का उपयोग करना है ?
तो, Data->Link->Link == NULL
अंत बिंदु कहाँ है, Data->Link
विलय बिंदु (सूची के अंत में) के रूप में दे रहा है ।
संपादित करें:
ठीक है, आपके द्वारा पोस्ट की गई तस्वीर से, आप दो सूचियों को पार्स करते हैं, सबसे छोटा। सबसे छोटी सूची के साथ आप निम्नलिखित नोड के संदर्भों को बनाए रख सकते हैं। अब, जब आप दूसरी सूची को पार्स करते हैं, तो आप संदर्भ पर एक तुलना करते हैं, जहां संदर्भ [i] लिंक्डलिस्ट [i] -> लिंक पर संदर्भ है। यह मर्ज बिंदु देगा। चित्रों के साथ व्याख्या करने का समय (चित्र ओपी पर मूल्यों को सुपरिमेट करें)।
आपके पास एक लिंक की गई सूची है (नीचे दिखाए गए संदर्भ):
A->B->C->D->E
आपके पास दूसरी लिंक की गई सूची है:
1->2->
विलय की गई सूची के साथ, संदर्भ इस प्रकार होंगे:
1->2->D->E->
इसलिए, आप पहली "छोटी" सूची (मर्ज किए गए सूची के रूप में, जो हम गिन रहे हैं, उसकी लंबाई 4 और मुख्य सूची 5) है।
पहली सूची के माध्यम से लूप, संदर्भ का एक संदर्भ बनाए रखें।
सूची में निम्नलिखित संदर्भ होंगे Pointers { 1, 2, D, E }
।
अब हम दूसरी सूची से गुजरते हैं:
-> 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.
ज़रूर, आप बिंदुओं की एक नई सूची बनाए रखते हैं, लेकिन विनिर्देश के बाहर नहीं। हालाँकि पहली सूची को एक बार में पार्स किया जाता है, और दूसरी सूची को पूरी तरह से पार्स किया जाएगा यदि कोई मर्ज बिंदु नहीं है। अन्यथा, यह जल्द ही समाप्त हो जाएगा (मर्ज बिंदु पर)।