10
10
"""
11
11
12
12
from dataclasses import dataclass
13
- from typing import Self
13
+ from typing import Self , TypeVar
14
+
15
+ Data = TypeVar ("Data" )
14
16
15
17
16
18
@dataclass
17
- class Node :
18
- data : int
19
+ class Node [ Data ] :
20
+ data : Data
19
21
previous : Self | None = None
20
22
next : Self | None = None
21
23
@@ -52,7 +54,7 @@ def __str__(self):
52
54
current = current .next
53
55
return " " .join (str (node ) for node in nodes )
54
56
55
- def __contains__ (self , value : int ):
57
+ def __contains__ (self , value : Data ):
56
58
current = self .head
57
59
while current :
58
60
if current .data == value :
@@ -87,7 +89,7 @@ def set_tail(self, node: Node) -> None:
87
89
else :
88
90
self .insert_after_node (self .tail , node )
89
91
90
- def insert (self , value : int ) -> None :
92
+ def insert (self , value : Data ) -> None :
91
93
node = Node (value )
92
94
if self .head is None :
93
95
self .set_head (node )
@@ -116,7 +118,7 @@ def insert_after_node(self, node: Node, node_to_insert: Node) -> None:
116
118
117
119
node .next = node_to_insert
118
120
119
- def insert_at_position (self , position : int , value : int ) -> None :
121
+ def insert_at_position (self , position : int , value : Data ) -> None :
120
122
current_position = 1
121
123
new_node = Node (value )
122
124
node = self .head
@@ -128,7 +130,7 @@ def insert_at_position(self, position: int, value: int) -> None:
128
130
node = node .next
129
131
self .set_tail (new_node )
130
132
131
- def get_node (self , item : int ) -> Node :
133
+ def get_node (self , item : Data ) -> Node :
132
134
node = self .head
133
135
while node :
134
136
if node .data == item :
0 commit comments