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

ลบโหนดในลิงค์ลิสต์ใน Python

สมมติว่าเรามีลิงค์ลิสต์ที่มีองค์ประกอบบางส่วน ภารกิจของเราคือเขียนฟังก์ชันที่จะลบโหนดที่กำหนดออกจากลิสต์ เช่นถ้าลิสต์เป็น 1 → 3 → 5 → 7 → 9 และหลังจากลบ 3 จะกลายเป็น 1 → 5 → 7 → 9

พิจารณาว่าเรามีตัวชี้ 'node' ที่ชี้ไปยังโหนดที่จะลบ เราต้องดำเนินการดังนี้เพื่อลบโหนด:

  • node.val = node.next.val
  • node.next = node.next.next

ตัวอย่าง (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 deleteNode(self, node, data):
        """
        :type node: ListNode
        :rtype: void Do not return anything, modify node in-place instead.
        """
        while node.val is not data:
            node = node.next
        node.val = node.next.val
        node.next = node.next.next

head = make_list([1,3,5,7,9])
ob1 = Solution()
ob1.deleteNode(head, 3)
print_list(head)

อินพุต

linked_list = [1,3,5,7,9] data = 3

เอาต์พุต

[1, 5, 7, 9, ]