কম্পিউটার

পাইথনে তালিকার শেষ থেকে Nth নোড সরান


ধরুন আমাদের একটি লিঙ্ক করা তালিকা আছে। আমাদের তালিকার শেষ থেকে Nth নোডটি সরাতে হবে, তারপর তার মাথাটি ফিরিয়ে দিতে হবে। তাই যদি তালিকাটি [1, 2, 3, 4, 5, 6] এবং n =3 এর মত হয়, তাহলে ফিরে আসা তালিকাটি হবে [1, 2, 3, 5, 6]।

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

  • যদি হেডের পরে কোন নোড না থাকে, তাহলে None ফেরত দিন
  • সামনে :=মাথা, পিছনে :=মাথা, কাউন্টার :=0 এবং ফাউন্ট :=মিথ্যা
  • যখন কাউন্টার <=n
    • যদি সামনে উপস্থিত না থাকে, তাহলে পতাকাটিকে সত্য হিসাবে সেট করুন এবং লুপ থেকে বেরিয়ে আসুন
    • সামনে :=সামনের পাশে, এবং কাউন্টার 1 দ্বারা বাড়ান
  • যখন সামনে উপস্থিত থাকে
    • সামনে :=সামনের পাশে
    • ব্যাক :=পিছনের পাশে
  • যদি পতাকা মিথ্যা হয়, তাহলে
    • temp :=পিছনের পাশে
    • পিছের পাশে :=টেম্পের পরের দিকে
    • টেম্পের পরের :=কোনোটিই নয়
  • অন্যথায় মাথা :=মাথার পাশে
  • রিটার্ন হেড

উদাহরণ(পাইথন)

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

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 removeNthFromEnd(self, head, n):
      if not head.next:
         return None
      front=head
      back = head
      counter = 0
      flag = False
      while counter<=n:
         if(not front):
            flag = True
            break
         front = front.next
         counter+=1
      while front:
         front = front.next
         back = back.next
      if not flag:
         temp = back.next
         back.next = temp.next
         temp.next = None
      else:
         head = head.next
      return head
head = make_list([1,2,3,4,5,6])
ob1 = Solution()
print_list(ob1.removeNthFromEnd(head, 3))

ইনপুট

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

আউটপুট

[1,2,3,5,6]

  1. একটি তালিকা থেকে প্যালিনড্রোমিক উপাদানগুলি সরানোর জন্য পাইথন প্রোগ্রাম

  2. পাইথন প্রোগাম অন্য তালিকা থেকে সদৃশ উপাদান সূচক অপসারণ করতে

  3. Python - একটি তালিকা থেকে Tuples মুছে ফেলুন যার প্রতিটি উপাদান নেই

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