Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में वैकल्पिक पदों पर एक लिंक की गई सूची को किसी अन्य लिंक की गई सूची में मर्ज करें

हमें लिंक की गई सूची के रूप में दो डेटा संरचनाएं दी गई हैं, मान लीजिए, 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

  1. लिंक्ड सूची के वैकल्पिक नोड्स का उत्पाद

    एन नोड्स के साथ दिया गया कार्य एक लिंक्ड सूची में वैकल्पिक नोड के उत्पाद को प्रिंट करना है। प्रोग्राम को केवल नोड्स के स्थान को बदले बिना वैकल्पिक नोड्स के उत्पाद को प्रिंट करना चाहिए। उदाहरण Input -: 10 20 30 40 50 60 Output -: 15000 उपरोक्त उदाहरण में, पहले नोड से शुरू होकर 10 वैकल्पिक नोड 10, 30

  1. C++ में सॉर्ट की गई सर्कुलर लिंक्ड लिस्ट में डालें

    मान लीजिए कि हमारे पास एक सर्कुलर लिंक्ड लिस्ट से एक नोड है जिसे बढ़ते क्रम में क्रमबद्ध किया गया है, हमें सूची में वैल्यू इंसर्टवैल डालने के लिए एक फ़ंक्शन को परिभाषित करना होगा जैसे कि यह एक क्रमबद्ध सर्कुलर सूची बनी रहे। नोड सूची में किसी एकल नोड का संदर्भ हो सकता है, और जरूरी नहीं कि यह परिपत्र

  1. सी++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

    इस समस्या में हमें एक लिंक्ड लिस्ट दी जाती है। हमारा काम लिंक की गई सूची के वैकल्पिक नोड्स के योग को प्रिंट करना है। लिंक्ड सूची डेटा संरचना का एक क्रम है जो लिंक के माध्यम से एक साथ जुड़े होते हैं। अब, समस्या पर वापस आते हैं। यहां, हम लिंक की गई सूची के वैकल्पिक नोड्स जोड़ेंगे। इसका मतलब है कि ह