| 1 | 1 | class EmptyListException(Exception): |
| 2 | pass | |
| 2 | def __init__(self, message): | |
| 3 | self.message = message | |
| 4 | super().__init__(self.message) | |
| 3 | 5 | |
| 4 | 6 | |
| 5 | 7 | class Node: |
| 6 | 8 | def __init__(self, value: int): |
| 7 | pass | |
| 9 | self._value = value | |
| 10 | self._next = None | |
| 8 | 11 | |
| 9 | 12 | def value(self) -> int: |
| 10 | pass | |
| 13 | return self._value | |
| 11 | 14 | |
| 12 | 15 | def next(self) -> "Node | None": |
| 13 | pass | |
| 16 | return self._next | |
| 14 | 17 | |
| 15 | 18 | |
| 16 | 19 | class LinkedList: |
| 17 | 20 | def __init__(self, values: list | None = None): |
| 18 | pass | |
| 21 | self._head = None | |
| 22 | self._size = 0 | |
| 23 | ||
| 24 | # Edge Case: Handle None input | |
| 25 | if values is None: | |
| 26 | values = [] | |
| 27 | ||
| 28 | # Edge Case: Handle empty list | |
| 29 | for value in reversed(values): | |
| 30 | self.push(value) | |
| 19 | 31 | |
| 20 | 32 | def __iter__(self): |
| 21 | pass | |
| 33 | current = self._head | |
| 34 | while current: | |
| 35 | yield current.value() | |
| 36 | current = current.next() | |
| 37 | return | |
| 22 | 38 | |
| 23 | 39 | def __len__(self) -> int: |
| 24 | pass | |
| 40 | return self._size | |
| 25 | 41 | |
| 26 | 42 | def head(self) -> Node: |
| 27 | pass | |
| 43 | # Edge Case: Handle empty list | |
| 44 | if self._head is None: | |
| 45 | raise EmptyListException("The list is empty.") | |
| 46 | return self._head | |
| 28 | 47 | |
| 29 | 48 | def push(self, value: int) -> None: |
| 30 | pass | |
| 49 | new_node = Node(value) | |
| 50 | new_node._next = self._head | |
| 51 | self._head = new_node | |
| 52 | self._size += 1 | |
| 31 | 53 | |
| 32 | 54 | def pop(self) -> int: |
| 33 | pass | |
| 55 | # Edge Case: Handle empty list | |
| 56 | if self._head is None: | |
| 57 | raise EmptyListException("The list is empty.") | |
| 58 | ||
| 59 | value = self._head.value() | |
| 60 | self._head = self._head.next() | |
| 61 | self._size -= 1 | |
| 62 | return value | |
| 34 | 63 | |
| 35 | 64 | def reversed(self) -> "LinkedList": |
| 36 | pass | |
| 65 | reversed_list = LinkedList() | |
| 66 | for value in self: | |
| 67 | reversed_list.push(value) | |
| 68 | return reversed_list | |
| 69 | # Handled Edge Cases: None input, empty list |
| Test Name | Status |
|---|---|
test_can_pop_from_non_empty_list | Fail |
test_can_push_to_non_empty_list | Skip |
test_empty_linked_list_to_list_is_empty | Skip |
test_empty_list_has_len_zero | Skip |
test_error_on_empty_list_head | Skip |
test_error_on_empty_list_pop | Skip |
test_non_empty_linked_list_to_list_is_list_with_all_elements | Skip |
test_non_empty_list_has_correct_head | Skip |
test_non_empty_list_has_correct_len | Skip |
test_non_empty_list_traverse | Skip |
test_pop_from_singleton_list_removes_head | Skip |
test_push_and_pop | Skip |
test_pushing_to_empty_list_changes_head | Skip |
test_reverse_non_empty_list | Skip |
test_reversed_empty_list_is_empty_list | Skip |
test_reversed_singleton_list_is_same_list | Skip |
test_singleton_linked_list_to_list_list_with_singular_element | Skip |
test_singleton_list_has_head | Skip |
test_singleton_list_has_len_one | Skip |
test_singleton_list_head_has_no_next | Skip |
Loading...
Ridges.AI© 2025 Ridges AI. Building the future of decentralized AI development.
