আমাদের দুটি লিংকড লিস্ট ডেটা স্ট্রাকচার দেওয়া আছে, ধরুন 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