# Program to remove last occurrence of a given target from a linked list in Python

Suppose we have a singly linked list, and another value called target, we have to remove the last occurrence of target in the given list.

So, if the input is like [5,4,2,6,5,2,3,2,4,5,4,7], target = 5, then the output will be [5, 4, 2, 6, 5, 2, 3, 2, 4, 4, 7, ]

To solve this, we will follow these steps −

• k := null, prev := null
• found := False
• while node is not null, do
• if value of node is same as target, then
• found := True
• prev := k
• k := node
• node := next of node
• if found is False, then
• if prev is null, then
• nect of prev := next of the next of prev

Let us see the following implementation to get better understanding −

## Example

Live Demo

class ListNode:
def __init__(self, data, next = None):
self.val = data
self.next = next
def make_list(elements):
for element in elements[1:]:
while ptr.next:
ptr = ptr.next
ptr.next = ListNode(element)
print('[', end = "")
while ptr:
print(ptr.val, end = ", ")
ptr = ptr.next
print(']')
class Solution:
def solve(self, node, target):
k = None
prev = None
found = False
while node:
if node.val == target:
found = True
prev = k
k = node
node = node.next
if found == False:
if not prev:
prev.next = prev.next.next
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))

## Input

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

## Output

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

Updated on: 19-Nov-2020

253 Views 