हमें लिंक की गई सूची के रूप में दो डेटा संरचनाएं दी गई हैं, मान लीजिए, List_1 और List_2। कार्य लिंक की गई सूची 'List_2' के तत्वों को एक वैकल्पिक स्थिति में लिंक की गई सूची 'List_1' में मर्ज करना है और यदि हमारे पास ऐसे तत्व रह जाते हैं जिन्हें 'List_1' में मर्ज नहीं किया जा सकता है, तो इसे 'के रूप में मुद्रित किया जाएगा। List_2' शेष तत्व।
उदाहरण के लिए-:
में -
सूची_1 =
सूची_2 =
बाहर - मर्ज की गई सूची है-:
स्पष्टीकरण - हमें दो सूचियां दी गई हैं, यानी List_1 और List_2। हमने सूची_2 के संभावित तत्वों को वैकल्पिक स्थितियों में सूची_1 में मिला दिया था। इसलिए, List_1 में विलय के बाद के तत्व 10->3->2->1->1->4->2->5->5 हैं और List_2 में 7->2 हैं।
में -
सूची_1 =11 -> 12 -> 13
List_2 =14 -> 15 -> 16 -> 17 -> 18
बाहर −मर्ज की गई सूची है -:11 -> 14 -> 12 -> 15 -> 13
स्पष्टीकरण −हमें दो सूचियां दी गई हैं यानी List_1 और List_2। हमने सूची_2 के संभावित तत्वों को वैकल्पिक स्थितियों में सूची_1 में मिला दिया था। तो, List_1 में विलय के बाद के तत्व 11 -> 14 -> 12 -> 15 -> 13 हैं और List_2 में 16->17->18 हैं।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है -
-
एक हेड नोड बनाएं जो लिंक की गई सूची के पहले नोड को इंगित करेगा।
-
लिंक की गई सूची बनाने के लिए नोड का एक वर्ग बनाएं जिसमें डेटा सदस्यों के रूप में मूल्य और अगला होगा। डिफ़ॉल्ट कंस्ट्रक्टर को Node(int val) के रूप में परिभाषित करें और मान को वैल और अगला NULL के रूप में सेट करें।
-
लिंक की गई सूची में तत्वों को जोड़ने के लिए add(int update_value) में एक विधि के अंदर।
-
ऑब्जेक्ट को new_node के रूप में बनाएं और डिफ़ॉल्ट कंस्ट्रक्टर को update_value पास करें।
-
new_node. को शीर्ष के बगल में और शीर्ष को new_node पर सेट करें
-
-
मर्जलिस्ट में एक फ़ंक्शन के अंदर (ट्यूटोरियलपॉइंट सूची)
-
n1_curr के रूप में एक ऑब्जेक्ट बनाएं और हेड पर सेट करें और n2_curr को list.head पर सेट करें
-
ऑब्जेक्ट को n1_next और n2_next के रूप में बनाएं
-
जबकि n1_curr !=null और n2_curr !=null के रूप में प्रारंभ करें। जबकि सेट के अंदर n1_next से n1_curr.next, n2_next से n2_curr.next, n2_curr.next से n1_next, n1_curr.next to n2_curr, n1_curr से n1_next और n2_curr से n2_next
-
list.head को n2_curr पर सेट करें
-
-
मुख्य () विधि के अंदर
-
एक ऑब्जेक्ट बनाएं TutorialPoint list_1 से new TutorialPoint() और TutorialPoint list_2 to new TutorialPoint()
-
सूची_1 में तत्वों को सूची_1.जोड़ें(13), सूची_1.जोड़ें(12) और सूची_1.जोड़ें(11) के रूप में जोड़ें।
-
सूची_2 में तत्वों को सूची_2.जोड़ें(18), सूची_2.जोड़ें(17), सूची_2.जोड़ें(16), सूची_2.जोड़ें(15) और सूची_2.जोड़ें(14)
-
list_2 के तत्वों को list_1 के रूप में list_1.mergeList(list_2)
के रूप में मर्ज करने के लिए mergeList विधि को कॉल करें। -
अंतिम सूची को आउटपुट के रूप में प्रिंट करें।
-
उदाहरण
public class TutorialPoint{ Node head; class Node{ int value; Node next; Node(int val){ value = val; next = null; } } void add(int updated_value){ Node new_node = new Node(updated_value); new_node.next = head; head = new_node; } void mergeList(TutorialPoint list){ Node n1_curr = head, n2_curr = list.head; Node n1_next, n2_next; while (n1_curr != null && n2_curr != null){ n1_next = n1_curr.next; n2_next = n2_curr.next; n2_curr.next = n1_next; n1_curr.next = n2_curr; n1_curr = n1_next; n2_curr = n2_next; } list.head = n2_curr; } public static void main(String args[]){ TutorialPoint list_1 = new TutorialPoint(); TutorialPoint list_2 = new TutorialPoint(); list_1.add(13); list_1.add(12); list_1.add(11); list_2.add(18); list_2.add(17); list_2.add(16); list_2.add(15); list_2.add(14); list_1.mergeList(list_2); System.out.println("Merged list is:"); Node temp = list_1.head; while (temp != null){ System.out.print(temp.value + " "); temp = temp.next; } System.out.println(); } }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
Merged list is: 11 14 12 15 13 16