From 2fcee6d49294f630f3bea81da073d9dc650eb85f Mon Sep 17 00:00:00 2001 From: Isidro Arias Date: Fri, 18 Apr 2025 13:48:36 +0200 Subject: [PATCH 1/3] Generic type hint in DDL Instead of forcing int --- .../linked_list/doubly_linked_list_two.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/data_structures/linked_list/doubly_linked_list_two.py b/data_structures/linked_list/doubly_linked_list_two.py index 8c93cddd5d31..01c9e1d47644 100644 --- a/data_structures/linked_list/doubly_linked_list_two.py +++ b/data_structures/linked_list/doubly_linked_list_two.py @@ -10,12 +10,14 @@ """ from dataclasses import dataclass -from typing import Self +from typing import Self, TypeVar + +Data = TypeVar("Data") @dataclass -class Node: - data: int +class Node[Data]: + data: Data previous: Self | None = None next: Self | None = None @@ -52,7 +54,7 @@ def __str__(self): current = current.next return " ".join(str(node) for node in nodes) - def __contains__(self, value: int): + def __contains__(self, value: Data): current = self.head while current: if current.data == value: @@ -87,7 +89,7 @@ def set_tail(self, node: Node) -> None: else: self.insert_after_node(self.tail, node) - def insert(self, value: int) -> None: + def insert(self, value: Data) -> None: node = Node(value) if self.head is None: self.set_head(node) @@ -116,7 +118,7 @@ def insert_after_node(self, node: Node, node_to_insert: Node) -> None: node.next = node_to_insert - def insert_at_position(self, position: int, value: int) -> None: + def insert_at_position(self, position: int, value: Data) -> None: current_position = 1 new_node = Node(value) node = self.head @@ -128,7 +130,7 @@ def insert_at_position(self, position: int, value: int) -> None: node = node.next self.set_tail(new_node) - def get_node(self, item: int) -> Node: + def get_node(self, item: Data) -> Node: node = self.head while node: if node.data == item: From f859e6d1748e76663590f2cf686b3277ecbd7d25 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 21 Apr 2025 21:59:56 +0300 Subject: [PATCH 2/3] Update doubly_linked_list_two.py --- .../linked_list/doubly_linked_list_two.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data_structures/linked_list/doubly_linked_list_two.py b/data_structures/linked_list/doubly_linked_list_two.py index 01c9e1d47644..7217f6ff7e96 100644 --- a/data_structures/linked_list/doubly_linked_list_two.py +++ b/data_structures/linked_list/doubly_linked_list_two.py @@ -12,12 +12,12 @@ from dataclasses import dataclass from typing import Self, TypeVar -Data = TypeVar("Data") +DataType = TypeVar("DataType") @dataclass -class Node[Data]: - data: Data +class Node[DataType]: + data: DataType previous: Self | None = None next: Self | None = None @@ -54,7 +54,7 @@ def __str__(self): current = current.next return " ".join(str(node) for node in nodes) - def __contains__(self, value: Data): + def __contains__(self, value: DataType): current = self.head while current: if current.data == value: @@ -89,7 +89,7 @@ def set_tail(self, node: Node) -> None: else: self.insert_after_node(self.tail, node) - def insert(self, value: Data) -> None: + def insert(self, value: DataType) -> None: node = Node(value) if self.head is None: self.set_head(node) @@ -118,7 +118,7 @@ def insert_after_node(self, node: Node, node_to_insert: Node) -> None: node.next = node_to_insert - def insert_at_position(self, position: int, value: Data) -> None: + def insert_at_position(self, position: int, value: DataType) -> None: current_position = 1 new_node = Node(value) node = self.head From 20a967df8223ae1038f4d26ef369e1421f7d1911 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 21 Apr 2025 22:01:05 +0300 Subject: [PATCH 3/3] Update doubly_linked_list_two.py --- data_structures/linked_list/doubly_linked_list_two.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/linked_list/doubly_linked_list_two.py b/data_structures/linked_list/doubly_linked_list_two.py index 7217f6ff7e96..a7f639a6e289 100644 --- a/data_structures/linked_list/doubly_linked_list_two.py +++ b/data_structures/linked_list/doubly_linked_list_two.py @@ -130,7 +130,7 @@ def insert_at_position(self, position: int, value: DataType) -> None: node = node.next self.set_tail(new_node) - def get_node(self, item: Data) -> Node: + def get_node(self, item: DataType) -> Node: node = self.head while node: if node.data == item: