हमें दो डेटा संरचनाएं लिंक्ड सूची के रूप में दी गई हैं मान लें, List_1 और List_2। कार्य लिंक्ड सूची 'List_2' के तत्वों को लिंक्ड सूची 'List_1' में वैकल्पिक स्थिति पर मर्ज करना है और यदि हम उन तत्वों के साथ बचे हैं जिन्हें 'List_1' में मर्ज नहीं किया जा सकता है तो इसे 'List_2' शेष तत्वों के रूप में प्रिंट किया जाएगा।
उदाहरण के लिए-:
इनपुट -
List_1 =

List_2 =

आउटपुट - मर्ज की गई सूची है-:

व्याख्या - हमें दो सूचियाँ दी गई हैं यानी List_1 और List_2। हमने सूची 2 के संभावित तत्वों को सूची 1 में वैकल्पिक स्थितियों पर मर्ज किया। इसलिए मर्ज करने के बाद सूची 1 में तत्व 10->3->2->1->1->4->2->5->5 हैं और सूची 2 में 7->2 हैं।
इनपुट -
List_1 = 11 -> 12 -> 13
List_2 = 14 -> 15 -> 16 -> 17 -> 18
आउटपुट - मर्ज की गई सूची है -: 11 -> 14 -> 12 -> 15 -> 13
व्याख्या - हमें दो सूचियाँ दी गई हैं यानी List_1 और List_2। हमने सूची 2 के संभावित तत्वों को सूची 1 में वैकल्पिक स्थितियों पर मर्ज किया। इसलिए मर्ज करने के बाद सूची 1 में तत्व 11 -> 14 -> 12 -> 15 -> 13 हैं और सूची 2 में 16->17->18 हैं।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण इस प्रकार है -
एक हेड नोड बनाएं जो लिंक्ड सूची के पहले नोड को इंगित करेगा।
लिंक्ड सूची बनाने के लिए Node वर्ग बनाएं जिसमें वैल्यू और नेक्स्ट डेटा सदस्य हों। डिफ़ॉल्ट कंस्ट्रक्टर को Node(int val) के रूप में परिभाषित करें और वैल्यू को val और नेक्स्ट को NULL पर सेट करें।
एक विधि में add(int updated_value) लिंक्ड सूची में तत्व जोड़ने के लिए।
new_node ऑब्जेक्ट बनाएं और डिफ़ॉल्ट कंस्ट्रक्टर को updated_value पास करें।
new_node.next को हेड पर सेट करें और हेड को new_node पर सेट करें
mergeList(TutorialPoint list) फ़ंक्शन में
n1_curr ऑब्जेक्ट बनाएं और हेड पर सेट करें और n2_curr को list.head पर सेट करें
n1_next और n2_next ऑब्जेक्ट बनाएं
While को n1_curr != null AND 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 पर सेट करें
मुख्य () विधि के अंदर
TutorialPoint list_1 को new TutorialPoint() और TutorialPoint list_2 को new TutorialPoint() के रूप में ऑब्जेक्ट बनाएं
list_1 में तत्व जोड़ें जैसे list_1.add(13), list_1.add(12) और list_1.add(11)।
list_2 में तत्व जोड़ें जैसे list_2.add(18), list_2.add(17), list_2.add(16), list_2.add(15) और list_2.add(14)
list_2 के तत्वों को list_1 में मर्ज करने के लिए mergeList विधि को कॉल करें जैसे list_1.mergeList(list_2)
अंतिम सूची को आउटपुट के रूप में प्रिंट करें।
उदाहरण
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