কম্পিউটার

পাইথনে দুটি লিঙ্কযুক্ত তালিকা থেকে লিঙ্কযুক্ত তালিকার ছেদ খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের দুটি সাজানো লিঙ্কযুক্ত তালিকা L1 এবং L2 আছে, আমাদের একটি নতুন সাজানো লিঙ্কযুক্ত তালিকা তৈরি করতে হবে যাতে এই দুটি তালিকার ছেদ রয়েছে৷

সুতরাং, যদি ইনপুট হয় L1 =[2, 4, 8] L2 =[3, 4, 8, 10], তাহলে আউটপুট হবে [4, 8, ]

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

  • head :=মান 0 সহ একটি নতুন নোড
  • cur :=মাথা
  • যদিও l1 এবং l2 খালি নয়, কর
    • যদি l1 এর মান
    • l1 :=l1 এর পরবর্তী
  • অন্যথায় যখন l2 এর মান
  • l2 :=l2 এর পরবর্তী
  • অন্যথায়,
    • cur এর পরের :=একটি নতুন নোড যার মান l1 এর মানের সমান
    • l1 :=l1 এর পরবর্তী
    • l2 :=l2 এর পরবর্তী
    • cur :=cur এর পরবর্তী
  • মাথার পরের দিকে ফিরুন
  • আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    উদাহরণ

    class ListNode:
       def __init__(self, data, next = None):
          self.val = data
          self.next = next
    def make_list(elements):
       head = ListNode(elements[0])
       for element in elements[1:]:
          ptr = head
          while ptr.next:
             ptr = ptr.next
          ptr.next = ListNode(element)
       return head
    def print_list(head):
       ptr = head
       print('[', end = "")
       while ptr:
          print(ptr.val, end = ", ")
          ptr = ptr.next
       print(']')
    class Solution:
       def solve(self, l1, l2):
          head = cur = ListNode(0)
          while l1 and l2:
             if l1.val < l2.val:
                l1 = l1.next
             elif l2.val < l1.val:
                l2 = l2.next
             else:
                cur.next = ListNode(l1.val)
                l1 = l1.next
                l2 = l2.next
                cur = cur.next
          return head.next
    ob = Solution()
    L1 = make_list([2, 4, 8])
    L2 = make_list([3, 4, 8, 10])
    print_list(ob.solve(L1, L2))

    ইনপুট

    [2, 4, 8], [3, 4, 8, 10]

    আউটপুট

    [4, 8, ]

    1. পাইথনে লিঙ্ক করা তালিকা থেকে m নোডের পরে n নোড মুছে ফেলার প্রোগ্রাম

    2. দুটি স্ট্রিং থেকে অস্বাভাবিক শব্দ খুঁজে পেতে পাইথন প্রোগ্রাম

    3. পাইথন প্রোগ্রাম দুটি তালিকার ছেদ খুঁজে বের করতে?

    4. দুই বা ততোধিক তালিকার ইউনিয়ন খুঁজে পেতে পাইথন প্রোগ্রাম?