Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ลบโหนดที่ N ออกจากจุดสิ้นสุดของรายการใน Python


สมมติว่าเรามีรายการที่เชื่อมโยง เราต้องลบโหนด Nth ออกจากส่วนท้ายของรายการ จากนั้นส่งคืนส่วนหัว ดังนั้นหากรายการเป็นแบบ [1, 2, 3, 4, 5, 6] และ n =3 รายการที่ส่งคืนจะเป็น [1, 2, 3, 5, 6]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • หากไม่มีโหนดหลังส่วนหัว ให้คืนค่า None
  • ด้านหน้า :=หัว หลัง :=หัว เคาน์เตอร์ :=0 และ :=false
  • ในขณะที่เคาน์เตอร์ <=n
    • ถ้าไม่มี front ให้ตั้งค่า flag เป็น true แล้วออกจาก loop
    • ด้านหน้า :=ถัดจากด้านหน้า และเพิ่มตัวนับ 1
  • ในขณะที่ด้านหน้ามีอยู่
    • ด้านหน้า :=ถัดจากด้านหน้า
    • หลัง :=หลังถัดไป
  • ถ้าแฟล็กเป็นเท็จ
    • อุณหภูมิ :=ถัดจากด้านหลัง
    • ถัดไปจากด้านหลัง :=ถัดไปของชั่วคราว
    • ถัดไปของอุณหภูมิ :=ไม่มี
  • มิฉะนั้น head :=ถัดไปของ head
  • กลับหัว

ตัวอย่าง(Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −

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]