কম্পিউটার

একটি প্রদত্ত লিঙ্কযুক্ত তালিকাকে পাইথনে আরোহী ক্রমে সাজানোর প্রোগ্রাম


ধরুন আমরা একটি লিঙ্ক তালিকা আছে. আমাদের তালিকাটিকে ক্রমবর্ধমান ক্রমে সাজাতে হবে।

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

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

  • মান :=একটি নতুন তালিকা
  • হেড :=নোড
  • যদিও নোড নাল না হয়, তবে
      করুন
    • মানগুলির শেষে নোডের মান সন্নিবেশ করান
    • নোড :=নোডের পাশে
  • তালিকা মান সাজান
  • মান :=মানগুলির উপাদানগুলি নিয়ে একটি ডবল শেষ সারি তৈরি করুন
  • নোড :=হেড
  • যদিও নোড নাল না হয়, তবে
      করুন
    • নোডের মান :=সারির বাম উপাদান এবং সারির বাম থেকে উপাদান মুছে দিন
    • নোড :=নোডের পাশে
  • রিটার্ন হেড

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

উদাহরণ

import collections

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):

   values = []
   head = node
   while node:
      values.append(node.val)
      node = node.next

   values.sort()
   values = collections.deque(values)

   node = head
   while node:
      node.val = values.popleft()
      node = node.next

   return head

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

ইনপুট

[5, 8, 4, 1, 5, 6, 3]

আউটপুট

[1, 3, 4, 5, 5, 6, 8, ]

  1. পাইথনে লিঙ্ক করা তালিকাকে জিগ-জ্যাগ বাইনারি ট্রিতে রূপান্তর করার প্রোগ্রাম

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

  3. পাইথন - প্রদত্ত তালিকাকে নেস্টেড তালিকায় রূপান্তর করুন

  4. পাইথনে লিঙ্কযুক্ত তালিকায় নোড মুছুন