কম্পিউটার

পাইথনে এককভাবে লিঙ্ক করা তালিকার মাঝের নোড খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি এককভাবে লিঙ্কযুক্ত তালিকা নোড আছে, আমাদের মধ্যবর্তী নোডের মান খুঁজে বের করতে হবে। এবং যখন দুটি মধ্যবর্তী নোড থাকবে, তখন আমরা দ্বিতীয়টি ফেরত দেব। আমাদের একক পাসে এটি সমাধান করার চেষ্টা করতে হবে।

সুতরাং, ইনপুট যদি [5,9,6,4,8,2,1,4,5,2] এর মত হয়, তাহলে আউটপুট হবে 2।

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

  • p:=নোড

  • d:=0, l:=0

  • যখন নোড নাল না হয়, তখন করুন

    • যদি d 2 এর মত না হয়, তাহলে

      • নোড:=নোডের পরবর্তী

      • l :=l + 1, d :=d + 1

    • অন্যথায়,

  • p:=p এর পরের, d:=0

    • p এর রিটার্ন ভ্যাল যখন l বিজোড় হয় অন্যথায় p

      এর পরের মান

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

উদাহরণ

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
class Solution:
   def solve(self, node):
      p=node
      d=0
      l=0
   while node:
      if d!=2:
         node=node.next
         l+=1
         d+=1
      else:
         p=p.next
         d=0
   return p.val if l & 1 else p.next.val
ob = Solution()
head = make_list([5,9,6,4,8,2,1,4,5,2])
print(ob.solve(head))

ইনপুট

Input:
[5,9,6,4,8,2,1,4,5,2]

আউটপুট

2

  1. পাইথনে k মানের উপর ভিত্তি করে লিঙ্কযুক্ত তালিকা নোডগুলি সাজানোর প্রোগ্রাম

  2. পাইথনে লিঙ্ক করা তালিকার K-তম নোড খুঁজে বের করার জন্য প্রোগ্রাম

  3. পাইথন প্রোগ্রাম একটি তালিকার ক্ষুদ্রতম সংখ্যা খুঁজে বের করতে

  4. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে