From 83935542cfa780f7d8c88776820d6da4f721a7c7 Mon Sep 17 00:00:00 2001 From: alstergym Date: Fri, 2 Oct 2026 08:59:57 +0200 Subject: [PATCH] 6th Commit --- Verkettete Liste/liste.py | 124 +++++++++++++++++++----- Verkettete Liste/nebensächlich/liste.py | 29 ++++++ 2 files changed, 131 insertions(+), 22 deletions(-) create mode 100644 Verkettete Liste/nebensächlich/liste.py diff --git a/Verkettete Liste/liste.py b/Verkettete Liste/liste.py index d678e8c..d5cb623 100644 --- a/Verkettete Liste/liste.py +++ b/Verkettete Liste/liste.py @@ -1,29 +1,109 @@ -from knoten import Knoten -class Liste: - def __init__(self): - self.head = None - - def ausgebenListe (self): - aktueller_knoten = self.head +from knoten import Knoten # aus der Datei "knoten.py" wird die Klasse "Knoten" importiert +class Liste: # Die Klasse "Liste" wird angelegt + def __init__(self): # Die Methode zur initialisierung der Klasse + self.head = None # Variable "Head" wird "None" gesetzt, also leer + # Freizeile + # Freizeile + def append(self,daten): # In der Methode "append" werden Einträge hinzugefügt. + neuer_Knoten = Knoten(daten) # Es wird ein neuer Knoten, basierend auf der Klasse "Knoten" angelegt + # Freizeile + if self.head is None: # Wenn die Variable "Head" leer ist: + self.head = neuer_Knoten # Setze die Variablen "Head" und "neuer_Knoten" gleich + # Freizeile + else: # sonst: + letzter_Knoten = self.head # mache aus dem "letzter_Knoten" den neuen "Head" + # Freizeile + while letzter_Knoten.nachfolger is not None: # Solange die Variable "letzter_Knoten.nachfolger" nicht definiert ist: + letzter_Knoten = letzter_Knoten.nachfolger # setze den letzten Knoten ("letzter_Knoten") zum Nachfolger ("letzter_Knoten.nachfolger") + # Freizeile + letzter_Knoten.nachfolger = neuer_Knoten # und mache aus dem Nachfolger ("letzter_Knoten.nachfolger") den neuen Knoten ("neuer_Knoten") + # Freizeile + # Freizeile + def ausgebenListe(self): + # Freizeile + aktueller_knoten = self.head while aktueller_knoten is not None: + print(aktueller_knoten.daten) - aktueller_knoten = aktueller_knoten.nachfolger - def append(self,daten): - neuer_knoten = Knoten(daten) - if self.head is None: - self.head = neuer_knoten + aktueller_knoten = aktueller_knoten.nachfolger + + + def einfuegen_bei(self, index, daten): + + neuer_Knoten = Knoten(daten) + + if index == 0: + + neuer_Knoten.nachfolger = self.head + self.head = neuer_Knoten + + return #beendet die Methode + + aktueller_knoten = self.head + zaehler = 0 + while aktueller_knoten is not None and zaehler < index - 1: + aktueller_knoten = aktueller_knoten.nachfolger + zaehler += 1 + + if aktueller_knoten is None: + print ("index out of range") + return + + neuer_Knoten.nachfolger = aktueller_knoten.nachfolger + aktueller_knoten.nachfolger = neuer_Knoten + + +### Sucht nach dem ersten Vorkommen des Werts und löscht es #### + def loeschen(self,suchwert): + aktueller_knoten = self.head + vorheriger_knoten = None + + if aktueller_knoten is None: + print("Liste ist leer löschen nicht möglich") + return + + if aktueller_knoten.daten == suchwert: + self.head = aktueller_knoten.nachfolger + return + + while aktueller_knoten is not None and aktueller_knoten.daten != suchwert: + vorheriger_knoten = aktueller_knoten # merken zum Löschen + aktueller_knoten = aktueller_knoten.nachfolger + + if aktueller_knoten is None: + print(f"Wert {suchwert} wurde nicht gefunden") + return + + vorheriger_knoten.nachfolger = aktueller_knoten.nachfolger + + + def loeschen_anStelle(self,index): + + if self.head is None: + print("Liste ist leer") + return + + if index == 0: + self.head = self.head.nachfolger + return + + aktueller_knoten = self.head + + for i in range(index-1): + if aktueller_knoten.nachfolger is None: + print(f"Index {index} existiert nicht") + return + aktueller_knoten = aktueller_knoten.nachfolger + + if aktueller_knoten.nachfolger is None: + print("Existiert nicht") return - else: - aktueller_knoten = self.head - while aktueller_knoten.nachfolger is not None: - aktueller_knoten = aktueller_knoten.nachfolger - aktueller_knoten.nachfolger = neuer_knoten + aktueller_knoten.nachfolger = aktueller_knoten.nachfolger.nachfolger - # def delete(self, daten): - # falscher_knoten = - -# Schnittstelle zur Verwaltung der Liste -# Methoden: Länge der Liste, Positionsabfrage, Einträge einfügen (attend) und Löschen, + + + + \ No newline at end of file diff --git a/Verkettete Liste/nebensächlich/liste.py b/Verkettete Liste/nebensächlich/liste.py new file mode 100644 index 0000000..d678e8c --- /dev/null +++ b/Verkettete Liste/nebensächlich/liste.py @@ -0,0 +1,29 @@ +from knoten import Knoten +class Liste: + def __init__(self): + self.head = None + + def ausgebenListe (self): + aktueller_knoten = self.head + + while aktueller_knoten is not None: + print(aktueller_knoten.daten) + aktueller_knoten = aktueller_knoten.nachfolger + + def append(self,daten): + neuer_knoten = Knoten(daten) + if self.head is None: + self.head = neuer_knoten + return + else: + aktueller_knoten = self.head + + while aktueller_knoten.nachfolger is not None: + aktueller_knoten = aktueller_knoten.nachfolger + aktueller_knoten.nachfolger = neuer_knoten + + # def delete(self, daten): + # falscher_knoten = + +# Schnittstelle zur Verwaltung der Liste +# Methoden: Länge der Liste, Positionsabfrage, Einträge einfügen (attend) und Löschen,