কম্পিউটার

জাভাতে বিকল্প অবস্থানে একটি লিঙ্কযুক্ত তালিকাকে অন্য লিঙ্কযুক্ত তালিকায় মার্জ করুন


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

উদাহরণস্বরূপ-:

তালিকা_1 =

জাভাতে বিকল্প অবস্থানে একটি লিঙ্কযুক্ত তালিকাকে অন্য লিঙ্কযুক্ত তালিকায় মার্জ করুন

তালিকা_২ =

জাভাতে বিকল্প অবস্থানে একটি লিঙ্কযুক্ত তালিকাকে অন্য লিঙ্কযুক্ত তালিকায় মার্জ করুন

আউট - একত্রিত তালিকা হল-:

জাভাতে বিকল্প অবস্থানে একটি লিঙ্কযুক্ত তালিকাকে অন্য লিঙ্কযুক্ত তালিকায় মার্জ করুন

ব্যাখ্যা − আমাদের দুটি তালিকা দেওয়া হয়েছে যেমন List_1 এবং List_2। আমরা বিকল্প অবস্থানে তালিকা_2-এর সম্ভাব্য উপাদানগুলিকে List_1-এ মার্জ করেছি। সুতরাং, List_1-এ মার্জ করার পর উপাদানগুলি হল 10->3->2->1->1->4->2->5->5 এবং List_2-এ হল 7->2৷

তালিকা_1 =11 -> 12 -> 13

তালিকা_2 =14 -> 15 -> 16 -> 17 -> 18

আউট −একত্রিত তালিকা হল -:11 -> 14 -> 12 -> 15 -> 13

ব্যাখ্যা −আমাদের দুটি তালিকা দেওয়া হয়েছে যেমন List_1 এবং List_2। আমরা বিকল্প অবস্থানে তালিকা_2-এর সম্ভাব্য উপাদানগুলিকে List_1-এ মার্জ করেছি। সুতরাং, List_1-এ মার্জ করার পর উপাদানগুলি হল 11 -> 14 -> 12 -> 15 -> 13 এবং List_2 এ হল 16->17->18৷

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

  • একটি হেড নোড তৈরি করুন যা একটি লিঙ্ক করা তালিকার প্রথম নোডের দিকে নির্দেশ করবে৷

  • লিঙ্ক করা তালিকা তৈরি করতে নোডের একটি ক্লাস তৈরি করুন যার মান থাকবে এবং পরবর্তী ডেটা সদস্য হিসাবে থাকবে। একটি ডিফল্ট কনস্ট্রাক্টরকে নোড (int val) হিসাবে সংজ্ঞায়িত করুন এবং মানটিকে val হিসাবে এবং পরবর্তী NULL হিসাবে সেট করুন৷

  • একটি লিঙ্ক তালিকায় উপাদান যোগ করতে add(int update_value) এ একটি পদ্ধতির ভিতরে।

    • নতুন_নোড হিসাবে একটি অবজেক্ট তৈরি করুন এবং ডিফল্ট কনস্ট্রাক্টরে আপডেট_মান পাস করুন।

    • new_node.next কে হেড এবং হেড new_node

      -এ সেট করুন
  • মার্জলিস্ট (টিউটোরিয়ালপয়েন্ট তালিকা)

    -এ একটি ফাংশনের ভিতরে
    • n1_curr হিসাবে একটি অবজেক্ট তৈরি করুন এবং head এ সেট করুন এবং n2_curr list.head

    • n1_next এবং n2_next

      হিসেবে একটি অবজেক্ট তৈরি করুন
    • n1_curr !=null এবং n2_curr !=নাল হিসাবে শুরু করুন। n1_curr.next এর n1_next, n2_next-এর n2_curr.next, n2_curr.next-এর n1_next, n1_curr.next-এর n2_curr, n1_curr-এর n1_next_P_2> এবং n1_curr-এর পরে সেট করার সময়

    • list.head কে n2_curr

      এ সেট করুন
  • main() পদ্ধতির ভিতরে

    • একটি অবজেক্ট তৈরি করুন TutorialPoint list_1 থেকে নতুন TutorialPoint() এবং TutorialPoint list_2 থেকে নতুন 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-এ list_1.mergeList(list_2)

      হিসেবে মার্জ করতে mergeList পদ্ধতিতে কল করুন
    • একটি আউটপুট হিসাবে চূড়ান্ত তালিকা প্রিন্ট করুন৷

উদাহরণ

<প্রি>পাবলিক ক্লাস টিউটোরিয়াল পয়েন্ট{নোড হেড; ক্লাস নোড{int মান; পরবর্তী নোড; নোড(int val){ value =val; পরবর্তী =শূন্য; } } void add(int update_value){ Node new_node =new Node(updated_value); new_node.next =মাথা; head =new_node; } void mergeList(TutorialPoint list){ নোড n1_curr =head, 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_পরবর্তী; n1_curr.next =n2_curr; n1_curr =n1_পরবর্তী; n2_curr =n2_পরবর্তী; } list.head =n2_curr; } পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং আর্গস[]){ টিউটোরিয়ালপয়েন্ট তালিকা_1 =নতুন টিউটোরিয়ালপয়েন্ট(); TutorialPoint list_2 =নতুন 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("একত্রিত তালিকা হল:"); নোড temp =list_1.head; যখন (temp !=null){ System.out.print(temp.value + ""); temp =temp.next; } System.out.println(); }}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে

একত্রিত তালিকা হল:11 14 12 15 13 16

  1. লিঙ্ক করা তালিকার বিকল্প নোডের পণ্য

  2. C++ এ লিঙ্ক করা তালিকার বিকল্প নোড মুছুন

  3. C++ এ একটি সাজানো সার্কুলার লিঙ্কড তালিকায় সন্নিবেশ করুন

  4. C++ এ লিঙ্ক করা তালিকার বিকল্প নোডের যোগফল