3
3
4
4
class Element :
5
5
6
- def __init__ (self , value ) -> None :
6
+ def __init__ (self , value : int ) -> None :
7
7
self .value = value
8
8
self .next : Optional [Element ] = None
9
-
10
- def __str__ (self ):
9
+
10
+ def __str__ (self ) -> str :
11
11
return f'<Element(value={ self .value } )>'
12
12
13
13
@@ -16,6 +16,15 @@ class LinkedList:
16
16
def __init__ (self ) -> None :
17
17
self .head = None
18
18
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
+
19
28
def push (self , new_element : Element ) -> None :
20
29
if self .head is None :
21
30
self .head = new_element
@@ -50,14 +59,16 @@ def insert(self, new_element: Element, position: int) -> None:
50
59
if previous_element :
51
60
previous_element .next = new_element
52
61
53
- def show (self ) -> None :
62
+ def delete_by_value (self , value : int ) -> None :
54
63
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
58
67
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
61
72
62
73
63
74
if __name__ == "__main__" :
@@ -82,4 +93,5 @@ def show(self) -> None:
82
93
linked_list .insert (fifth_element , 2 )
83
94
assert linked_list .get_element_at (2 ) is fifth_element
84
95
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