In diesem Artikel werden die verknüpften Listen -Implementierung von Python mithilfe von Knoten- und LinkedList -Klassen beschrieben. Es deckt Insertion, Löschung und Traversal ab und vergleichen verknüpfte Listen mit anderen Datenstrukturen. Das Hauptaugenmerk liegt auf den Vorteilen der verknüpften Listen im dynamischen Szene
Durch die Implementierung einer verknüpften Liste in Python wird eine Node
erstellt, um jedes Element und eine LinkedList
-Klasse darzustellen, um die Liste als Ganzes zu verwalten. Jeder Node
enthält die Daten und einen Zeiger auf den nächsten Knoten in der Sequenz. Die LinkedList
-Klasse enthält in der Regel Methoden zum Insertion, Löschen, Suchen und Durchqueren.
Hier ist eine grundlegende Implementierung:
<code class="python">class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if not self.head: self.head = new_node return current = self.head while current.next: current = current.next current.next = new_node def prepend(self, data): new_node = Node(data) new_node.next = self.head self.head = new_node def delete_node(self, key): current = self.head if current and current.data == key: self.head = current.next current = None return prev = None while current and current.data != key: prev = current current = current.next if current is None: return prev.next = current.next current = None def print_list(self): current = self.head while current: print(current.data, end=" -> ") current = current.next print("None") #Example Usage llist = LinkedList() llist.append(1) llist.append(2) llist.append(3) llist.prepend(0) llist.delete_node(2) llist.print_list() # Output: 0 -> 1 -> 3 -> None</code>
Dieses Beispiel zeigt eine einzeln verknüpfte Liste (jeder Knoten zeigt nur auf den nächsten). Doppelt verknüpfte Listen (Knoten weisen sowohl auf die nächsten als auch auf frühere Knoten) möglich und bieten unterschiedliche Leistungsmerkmale für bestimmte Operationen.
Vorteile:
Nachteile:
Im Vergleich zu anderen Datenstrukturen wie Arrays, Python -Listen (dynamische Arrays), Stapeln, Warteschlangen und Bäumen, verknüpfte Listen Excel, wenn häufige Einfügungen und Löschungen an willkürlichen Positionen erforderlich sind. Wenn der Zufallszugriff jedoch entscheidend ist, sind Arrays oder Python -Listen eine viel bessere Wahl.
Das Durchsuchen und Löschen von Knoten in einer verknüpften Liste beinhaltet von Natur aus durchqueren. Effiziente Suche bedeutet normalerweise, die Anzahl der besuchten Knoten zu minimieren. Für eine einzig verknüpfte Liste ist die Suche inhärent linear, o (n) Zeitkomplexität. Um einen Knoten zu löschen, muss der Knoten gelöscht und dann die Zeiger seines Vorgängers und Nachfolgers aktualisiert.
Die Methode delete_node
im vorherigen Code-Beispiel zeigt eine lineare Löschung. Um die Effizienz für die Suche zu verbessern, können Sie einen selbstausgleichenden binären Suchbaum oder eine Hash-Tabelle verwenden, wenn Sie häufig nach bestimmten Knoten suchen müssen. Diese würden jedoch eine erhebliche Umstrukturierung Ihrer Datenspeicherung erfordern.
Linked Listen finden Sie Anwendungen in Szenarien, in denen dynamisches Einfügen und Löschen wichtiger sind als der Zufallszugriff:
Im Wesentlichen ist eine verknüpfte Liste ein starker Anwärter, wenn die Kosten für die Verschiebung von Elementen in einem Array (aufgrund häufiger Einfügungen/Löschungen) die Kosten für den sequentiellen Zugriff überwiegen.
Das obige ist der detaillierte Inhalt vonWie implementiere ich eine verknüpfte Liste in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!