কম্পিউটার

পাইথনে বিজোড় জোড় লিঙ্কযুক্ত তালিকা


ধরুন আমাদের একটি এককভাবে লিঙ্কযুক্ত তালিকা রয়েছে, আমাদেরকে জোড় নোড দ্বারা অনুসরণ করে সমস্ত বিজোড় নোডকে একসাথে গোষ্ঠী করতে হবে। এখানে আমরা নোডের অবস্থানের কথা বলছি না নোডের মান সম্পর্কে। আমরা এটা জায়গায় করার চেষ্টা করা উচিত. সুতরাং যদি নোডগুলি [1,22,13,14,25] হয়, ফলাফল হবে [1,13,25,22,14]

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

  • যদি হেড নাল হয় বা হেডের পরেরটি শূন্য হয়, তাহলে হেড রিটার্ন করুন
  • head1 :=head, head2 :=মাথার পরের, head_beg :=মাথার পাশে
  • যখন head2 এর পরেরটি নাল নয় এবং এর পরেরটি (হেডের পরেরটি নাল নয়)
    • head1 এর পরের :=head2 এর পরবর্তী
    • head2 এর পরের =(মাথার পরের)
    • head1 :=head1 এর পরের এবং head2 :=head2 এর পরের
  • যদি head2 এর পরবর্তী শূন্য না হয়
    • head1 এর পরের :=head2 এর পরবর্তী
    • head1 :=head1 এর পরবর্তী
  • head1 এর পরের :=head2_beg এবং head2 এর পরের =শূন্য
  • রিটার্ন হেড

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

উদাহরণ

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(object):
   def oddEvenList(self, head):
      if head == None or head.next ==None:
         return head
      head1=head
      head2,head2_beg= head.next,head.next
      while head2.next!= None and head2.next.next!= None:
         head1.next = head2.next
         head2.next = head2.next.next
         head1 = head1.next
         head2 = head2.next
      if head2.next!=None:
         head1.next = head2.next
         head1 = head1.next
      head1.next = head2_beg
      head2.next = None
      return head
ob1 = Solution()
head = make_list([1,22,13,14,25])
print_list(ob1.oddEvenList(head))

ইনপুট

[1,22,13,14,25]

আউটপুট

[1, 13, 25, 22, 14, ]

  1. পাইথনে find(x, y) এর মান বের করার প্রোগ্রাম জোড় বা বিজোড়

  2. পাইথনে লিঙ্ক করা তালিকায় নোড অদলবদল করার জন্য প্রোগ্রাম

  3. পাইথন - Kth ইভেন এলিমেন্ট খুঁজুন

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