কম্পিউটার টিউটোরিয়াল

জাভাতে একটি লিংকড লিস্টকে অন্য লিংকড লিস্টে অল্টারনেট পজিশনে মার্জ করা

আমাদের দুটি লিংকড লিস্ট ডেটা স্ট্রাকচার দেওয়া আছে, ধরুন List_1 এবং List_2। কাজ হল List_2-এর এলিমেন্টগুলো List_1-এ অল্টারনেট পজিশনে মার্জ করা এবং যদি কোনো এলিমেন্ট মার্জ করা না যায়, তবে সেগুলো List_2-এর অবশিষ্ট এলিমেন্ট হিসেবে প্রিন্ট করা হবে।

উদাহরণ

উদাহরণ ১

ইনপুট:

List_1 =

জাভাতে একটি লিংকড লিস্টকে অন্য লিংকড লিস্টে অল্টারনেট পজিশনে মার্জ করা

List_2 =

জাভাতে একটি লিংকড লিস্টকে অন্য লিংকড লিস্টে অল্টারনেট পজিশনে মার্জ করা

আউটপুট: মার্জড লিস্ট:

জাভাতে একটি লিংকড লিস্টকে অন্য লিংকড লিস্টে অল্টারনেট পজিশনে মার্জ করা

ব্যাখ্যা: List_2-এর সম্ভব এলিমেন্টগুলো List_1-এ অল্টারনেট পজিশনে মার্জ করা হয়েছে। মার্জ করার পর List_1-এ: 10→3→2→1→1→4→2→5→5 এবং List_2-তে: 7→2।

উদাহরণ ২

ইনপুট:

List_1 = 11 → 12 → 13
List_2 = 14 → 15 → 16 → 17 → 18

আউটপুট: মার্জড লিস্ট: 11 → 14 → 12 → 15 → 13

ব্যাখ্যা: List_2-এর সম্ভব এলিমেন্টগুলো List_1-এ অল্টারনেট পজিশনে মার্জ করা হয়েছে। মার্জ করার পর List_1-এ: 11 → 14 → 12 → 15 → 13 এবং List_2-তে: 16→17→18।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • হেড নোড তৈরি করা হয় যা লিংকড লিস্টের প্রথম নোডকে পয়েন্ট করবে।
  • Node ক্লাস তৈরি করা হয় value এবং next ডেটা মেম্বারের সাথে। ডিফল্ট কনস্ট্রাক্টর Node(int val) দিয়ে value=val এবং next=null সেট করা হয়।
  • add(int updated_value) মেথডে লিংকড লিস্টে এলিমেন্ট যোগ করা হয়:
    • new_node অবজেক্ট তৈরি করে updated_value পাস করা হয়।
    • new_node.next = head এবং head = new_node সেট করা হয়।
  • mergeList(TutorialPoint list) ফাংশনে:
    • n1_curr = head, n2_curr = list.head
    • 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 সেট করা হয়।
  • main() মেথডে:
    • TutorialPoint list_1 এবং list_2 অবজেক্ট তৈরি করা হয়।
    • list_1-এ 13, 12, 11 এবং list_2-এ 18, 17, 16, 15, 14 যোগ করা হয়।
    • 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
  1. লিংকড লিস্টের বিকল্প নোডগুলির গুণফল বের করা

  2. C++-এ লিংকড লিস্ট থেকে অল্টারনেট নোড ডিলিট করা

  3. সর্টেড সার্কুলার লিংকড লিস্টে ইনসারশন C++-এ

  4. সি++-এ লিংকড লিস্টের অল্টারনেট নোডগুলোর যোগফল