从Python的链表中删除最后一次出现的给定目标的程序

假设我们有一个单链表,另一个名为target的值,我们必须删除给定列表中最后一次出现的target。

因此,如果输入类似于[5,4,2,6,5,2,3,2,4,5,4,7],目标= 5,则输出将为[5、4、2、6 ,5,2,3,2,4,4,7,]

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

  • 头:=节点

  • k:= null,上一页:= null

  • 发现:=错误

  • 当节点不为空时,执行

    • 找到:=真

    • 上一页:= k

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

    • k:=节点

    • 节点:=节点的下一个

    • 如果发现为假,则

      • 回头

    • 如果prev为null,则

      • 返回首位

    • 上一个nect:=上一个下一个

    • 回头

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

    示例

    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
          k = None
          prev = None
          found = False
          while node:
             if node.val == target:
                found = True
             prev = k
             k = node
             node = node.next
             if found == False:
                return head
             if not prev:
                return head.next
                prev.next = prev.next.next
          return head
    ob = Solution()L = make_list([5,4,2,6,5,2,3,2,4,5,4,7])
    target = 5
    print_list(ob.solve(L, target))

    输入值

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

    输出结果

    [5, 4, 2, 6, 5, 2, 3, 2, 4, 4, 7, ]
    猜你喜欢