Skip to content

Commit fd789e4

Browse files
committed
Fix type annotations for linked_list/__init__.py
1 parent 224f854 commit fd789e4

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

data_structures/linked_list/__init__.py

+11-7
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,32 @@
66
- Last node: points to null
77
"""
88

9-
from typing import Any
9+
from typing import TypeVar, Generic, Optional
1010

1111

12-
class Node:
13-
def __init__(self, item: Any, next: Any) -> None:
12+
T = TypeVar("T")
13+
14+
15+
class Node(Generic[T]):
16+
def __init__(self, item: T, next: Optional["Node[T]"]) -> None:
1417
self.item = item
1518
self.next = next
1619

1720

18-
class LinkedList:
21+
class LinkedList(Generic[T]):
1922
def __init__(self) -> None:
20-
self.head = None
23+
self.head: Optional[Node[T]] = None
2124
self.size = 0
2225

23-
def add(self, item: Any) -> None:
26+
def add(self, item: T) -> None:
2427
self.head = Node(item, self.head)
2528
self.size += 1
2629

27-
def remove(self) -> Any:
30+
def remove(self) -> Optional[T]:
2831
if self.is_empty():
2932
return None
3033
else:
34+
assert self.head is not None
3135
item = self.head.item
3236
self.head = self.head.next
3337
self.size -= 1

0 commit comments

Comments
 (0)