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

পাইথনে লিংকড লিস্টকে ফ্রন্ট-ব্যাক অল্টারনেট করে রিঅ্যারেঞ্জ করার প্রোগ্রাম

ধরা যাক একটি সিঙ্গলি লিংকড লিস্ট দেওয়া আছে। এটিকে এভাব সাজাতে হবে: শেষ নোড, তারপর প্রথম নোড, তারপর শেষ থেকে দ্বিতীয় নোড, তারপর দ্বিতীয় নোড—এভাব ক্রমাক্রমে।

উদাহরণ

ইনপুট: [1,2,3,4,5,6,7,8,9]

আউটপুট: [9, 1, 8, 2, 7, 3, 6, 4, 5]

সমাধানের ধাপসমূহ

  1. c := node (হেড নোড)
  2. l := একটি নতুন লিস্ট
  3. c নাল না হয়া পর্যন্ত:
    • c-এর মান l-এর শেষে যোগ করুন
    • c := c.next
  4. c := node (আবার হেড থেকে শুরু)
  5. c নাল না হয় এবং l খালি না হয়া পর্যন্ত:
    • c.val := l.pop() (শেষ এলিমেন্ট নিয়ে ডিলিট করুন)
    • c := c.next
    • যদি c নাল হয়, তবে ব্রেক করুন
    • c.val := l.pop(0) (প্রথম এলিমেন্ট নিয়ে ডিলিট করুন)
    • c := c.next
  6. node ফেরত দিন

পাইথন ইমপ্লিমেন্টেশন

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, node):
        c = node
        l = []
        while c:
            l.append(c.val)
            c = c.next
        c = node
        while c and l:
            c.val = l.pop()
            c = c.next
            if c is None:
                break
            c.val = l.pop(0)
            c = c.next
        return node

ob = Solution()
head = make_list([1,2,3,4,5,6,7,8,9])
print_list(ob.solve(head))

ইনপুট

[1,2,3,4,5,6,7,8,9]

আউটপুট

[9, 1, 8, 2, 7, 3, 6, 4, 5, ]
  1. পাইথনে লিংকড লিস্টে নোড সোয়াপ করার প্রোগ্রাম

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

  3. পাইথনে লিংকড লিস্টকে জিগ-জ্যাগ বাইনারি ট্রিতে রূপান্তর করার প্রোগ্রাম

  4. পাইথনে লিস্টকে স্ট্রিংে কনভার্ট করা