删除链表中所有值与Python相同的节点的程序

假设我们有一个单链接列表和一个目标,则在删除所有值与目标相同的节点后,我们必须返回相同的链接。

因此,如果输入类似于[5,8,2,6,5,2,9,6,2,4],则输出将为[5、8、6、5、9、6、4,]

为了解决这个问题,我们将遵循以下步骤-

  • 头:=节点

  • 当node和node.next不为null时,执行

    • 节点的下一个:=节点的下一个

    • 而节点的下一个值与目标相同,则执行

    • 节点:=节点的下一个

    • 如果head的值与目标相同,则

      • 返回首位

    • 除此以外,

      • 回头

    让我们看下面的实现以更好地理解-

    示例

    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, target):
          head = node
          while (node and node.next):
             while node.next.val == target:
                node.next = node.next.next
                node = node.next
             if head.val == target:
                return head.next
             else:
          return head
    ob = Solution()head = make_list([5,8,2,6,5,2,9,6,2,4])
    ob.solve(head, 2)
    print_list(head)

    输入值

    [5,8,2,6,5,2,9,6,2,4]

    输出结果

    [5, 8, 6, 5, 9, 6, 4, ]
    猜你喜欢