কম্পিউটার

পাইথনে লিঙ্ক করা তালিকার মধ্যে মার্জ করার জন্য প্রোগ্রাম


ধরুন আমাদের দুটি লিঙ্কযুক্ত তালিকা রয়েছে যথাক্রমে m এবং n দৈর্ঘ্যের L1 এবং L2, আমাদেরও দুটি অবস্থান a এবং b আছে। আমাদেরকে L1 থেকে a-th নোড থেকে b-th নোডে নোডগুলি সরাতে হবে এবং L2 এর মধ্যে মার্জ করতে হবে৷

সুতরাং, যদি ইনপুট হয় L1 =[1,5,6,7,1,6,3,9,12] L2 =[5,7,1,6] a =3 b =6, তাহলে আউটপুট হবে হতে [1, 5, 6, 5, 7, 1, 6, 9, 12]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • head2 :=L2, temp :=L2
  • যখন temp-এর পরবর্তী নোড থাকে, do
    • temp :=temp-এর পরবর্তী
  • tail2 :=temp
  • গণনা :=0
  • তাপ :=L1
  • end1 :=null, start3 :=null
  • যখন temp নাল না হয়, do
    • যদি গণনা a-1 এর সমান হয়, তাহলে
      • end1 :=temp
    • যদি গণনা b+1 এর মত হয়, তাহলে
      • start3 :=temp
      • লুপ থেকে বেরিয়ে আসুন
    • temp :=temp-এর পরবর্তী
    • গণনা :=গণনা + 1
  • end1 এর পরের :=head2
  • tail2 এর পরের :=start3
  • L1 ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

ক্লাস লিস্টনোড:def __init__(self, data, next =None):self.val =data self.next =nextdef make_list(elements):head =ListNode(elements[0]) উপাদানের উপাদানের জন্য[1:] :ptr =head while ptr.next:ptr =ptr.next ptr.next =ListNode(element) রিটার্ন headdef print_list(head):ptr =head print('[', end ="") যখন ptr:print(ptr. val, end =", ") ptr =ptr.next print(']')def solve(L1, L2, a, b):head2 =temp =L2 যখন temp.next:temp =temp.next tail2 =temp কাউন্ট =0 temp =L1 end1, start3 =None, None while temp:if count ==a-1:end1 =temp if count ==b+1:start3 =temp break temp =temp.next count +=1 end1.next =head2 tail2.next =start3 return L1L1 =[1,5,6,7,1,6,3,9,12]L2 =[5,7,1,6]a =3b =6print_list(solve(make_list) L1), make_list(L2), a, b))

ইনপুট

<প্রে>[1,5,6,7,1,6,3,9,12], [5,7,1,6], 3, 6

আউটপুট

[1, 5, 6, 5, 7, 1, 6, 9, 12, ]

  1. পাইথন ব্যবহার করে লিঙ্কযুক্ত তালিকা হিসাবে দেওয়া দুটি বহুপদ যোগ করার প্রোগ্রাম

  2. মার্জ সাজানোর জন্য পাইথন প্রোগ্রাম

  3. পুনরাবৃত্তিমূলক মার্জ সাজানোর জন্য পাইথন প্রোগ্রাম

  4. পাইথন প্রোগ্রাম দুটি তালিকার মধ্যে পার্থক্য তালিকাভুক্ত করতে।