Remove Value | Python

Run Settings
LanguagePython
Language Version
Run Command
class Node: def __init__(self, value, next=None): self.value = value self.next = next def __str__(self): return str(self.value) class LinkedList: def __init__(self, *items): self.head = None self.tail = None self.add(*items) def add(self, *items): for item in items: self.addAtEnd(item) def addAtEnd(self, value): if not self.head: self.head = self.tail = Node(value) else: curr = self.head while curr.next: curr = curr.next curr.next = Node(value) self.tail = curr.next def elems(self): curr = self.head count = 0 while curr: count += 1 curr = curr.next return count def __str__(self): curr = self.head res = [] while curr: res.append(str(curr.value)) curr = curr.next return "->".join(res) def removeValue(lst: LinkedList, value): # take care of values-to-be-removed at front. while lst.head.value == value: lst.head = lst.head.next # take care of values-to-be-removed after front. curr = lst.head prev = None while curr: if curr.value == value: curr = curr.next if prev: prev.next = curr else: prev = curr curr = curr.next return lst tests = [ ((1,2,3), 3, '1->2'), ((1, 2, 3,3,3,3), 3, '1->2'), ((8,1,1,4,12), 1, '8->4->12'), ((7,12,2,9), 7, '12->2->9'), ((7,7,7,12,2,9), 7, '12->2->9'), ] for i, (a, value, expected) in enumerate(tests): l = LinkedList(*a) got = str(removeValue(l, value)) if got == expected: print(f"PASS") else: print(f"FAIL: expected '{expected}', got '{got}'")
Editor Settings
Theme
Key bindings
Full width
Lines