কম্পিউটার টিউটোরিয়াল

পাইথনে Odd Even Linked List (বিষম-সম লিংকড লিস্ট)


মান করুন একটি সিঙ্গলি লিংকড লিস্ট আছে, আমাদের সব বিষম পজিশনের নোডগুলো একসাথে এবং তারপর সম পজিশনের নোডগুলো গ্রুপ করতে হবে। এখানে নোডের পজিশন বোঝানো হয়েছে, মান নয়। আমাদের চেষ্টা करनी চাই এটি ইন-প্লেসে করা। যেমন নোডগুলো [1,22,13,14,25] হলে ফলাফল হবে [1,13,25,22,14]।

সমাধানের ধাপগুলো:

  • যদি হেড নাল হয় বা হেডের নেক্সট নাল হয়, তবে হেড রিটার্ন করুন
  • head1 := head, head2 := head.next, head2_beg := head.next
  • head2.next নাল নয় এবং head2.next.next নাল নয় যতক্ষণ
    • head1.next := head2.next
    • head2.next := head2.next.next
    • head1 := head1.next এবং head2 := head2.next
  • যদি head2.next নাল নয়
    • head1.next := head2.next
    • head1 := head1.next
  • head1.next := head2_beg এবং head2.next := null
  • head রিটার্ন করুন

নিচে ইমপ্লিমেন্টেশন দেওয়া হলো:

উদাহরণ

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 is None or head.next is None:
            return head
        head1 = head
        head2, head2_beg = head.next, head.next
        while head2.next is not None and head2.next.next is not None:
            head1.next = head2.next
            head2.next = head2.next.next
            head1 = head1.next
            head2 = head2.next
        if head2.next is not 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. Python-এ find(x, y) এর মান জোড় কিনা বিজোড় সেটা বের করার প্রোগ্রাম

  2. পাইথনে লিংকড লিস্টে নোড সোয়াপ করার প্রোগ্রাম

  3. পাইথন - K-তম সম উপাদান খুঁজে বের করা

  4. পাইথনে লিংকড লিস্ট থেকে m নোডের পর n নোড ডিলিট করার প্রোগ্রাম