Files
eidp-klausuraufgaben/recursion/recursive_datastructure/lists.py

56 lines
1.9 KiB
Python

from dataclasses import dataclass
from typing import Iterator, Optional
@dataclass
class Node[T]:
value: T
next_node: Optional['Node[T]']
@dataclass
class LinkedList[T]:
def __post_init__(self):
# unser erstes Element
self.__head: Optional[Node[T]] = None
# Die Länge der Liste
self.__length = 0
def __eq__(self, other: 'LinkedList[T]') -> bool:
"""Hier wollen wir alle Elemente von dieser Liste mit allen Elementen von einer anderen Liste vergleichen.
Hierbei kann man von ausgehen dass T vergleichbar ist.
Das Programm sollte nicht abstürzen bei unterschiedlichen längen etc. sondern einfach False zurückgeben"""
pass
def __iter__(self) -> Iterator[T]:
"""Hier wollen wir einen Iterator über alle Elemente haben, der Iterator kann leer sein
Tipp: Generator"""
pass
def append(self, value: T) -> None:
"""Hier wollen wir einfach `value` an das Ende der Liste setzen und die Länge erhöhen"""
pass
def remove(self, value: T):
"""Hier wollen wir den Wert `value` aus unserer Liste entfernen, wir können davon ausgehen dass T vergleichbar ist.
Wenn wir `value` nicht finden soll einfach nichts passieren"""
pass
def __len__(self) -> int:
"""Hier soll die Länge der Liste zurückgegeben werden"""
pass
def __getitem__(self, index: int) -> T:
"""_summary_
__getitem__ definiert das verhalten vom [] index operator wobei `index` der Wert ist der in [] übergeben wird
Hierbei sollen wir das Item `T` an Stelle `index` zurückgeben und sonst einen IndexError raisen
Args:
index (int): der Index von dem Item was wir suchen
Returns:
T: das Item an stelle `index`
"""
pass