Skip to content

Commit 4ea7139

Browse files
Add delete by value method to linked list
1 parent 116d64a commit 4ea7139

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

linked_list/linked_list.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33

44
class Element:
55

6-
def __init__(self, value) -> None:
6+
def __init__(self, value: int) -> None:
77
self.value = value
88
self.next: Optional[Element] = None
9-
10-
def __str__(self):
9+
10+
def __str__(self) -> str:
1111
return f'<Element(value={self.value})>'
1212

1313

@@ -16,6 +16,15 @@ class LinkedList:
1616
def __init__(self) -> None:
1717
self.head = None
1818

19+
def __str__(self) -> str:
20+
current_element = self.head
21+
elements = []
22+
while current_element.next:
23+
elements.append(str(current_element))
24+
current_element = current_element.next
25+
elements.append(str(current_element))
26+
return str(elements)
27+
1928
def push(self, new_element: Element) -> None:
2029
if self.head is None:
2130
self.head = new_element
@@ -50,14 +59,16 @@ def insert(self, new_element: Element, position: int) -> None:
5059
if previous_element:
5160
previous_element.next = new_element
5261

53-
def show(self) -> None:
62+
def delete_by_value(self, value: int) -> None:
5463
current_element = self.head
55-
elements = []
56-
while current_element.next:
57-
elements.append(str(current_element))
64+
previous_element = None
65+
while current_element.next and value != current_element.value:
66+
previous_element = current_element
5867
current_element = current_element.next
59-
elements.append(str(current_element))
60-
print(elements)
68+
if current_element is self.head:
69+
self.head = self.head.next
70+
else:
71+
previous_element.next = current_element.next
6172

6273

6374
if __name__ == "__main__":
@@ -82,4 +93,5 @@ def show(self) -> None:
8293
linked_list.insert(fifth_element, 2)
8394
assert linked_list.get_element_at(2) is fifth_element
8495

85-
linked_list.show()
96+
linked_list.delete_by_value(5)
97+
assert linked_list.get_element_at(2) is second_element

0 commit comments

Comments
 (0)