Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Grundlegendes zur Implementierung verknüpfter Listen in Python

Python-Hosting
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Datenstrukturen spielen eine Schlüsselrolle in der Programmierwelt. Sie helfen uns, unsere Daten so zu organisieren, dass sie effizient genutzt werden können.

In diesem Tutorial lernen wir das kennen einfach verknüpfte Liste funktioniert doppelt verknüpfte Liste.

Eine verknüpfte Liste ist eine lineare Datenstruktur. Die Daten werden nicht an zusammenhängenden Speicherorten wie Arrays gespeichert. Und jedes Element in verknüpft heißt a Knoten und sie sind mit dem verbunden Zeiger. Die erste Knoten in der verknüpften Liste heißt das ganzer.

Die Größe der verknüpften Liste ist dynamisch. Wir können also beliebig viele Knoten haben, es sei denn, der Speicher ist im Gerät verfügbar.

Es gibt zwei Arten von verknüpften Listen. Schauen wir uns das ausführliche Tutorial nacheinander an.

#1. Singly Linked List

Eine einfach verknüpfte Liste enthält a einzelner Zeiger mit dem nächster Knoten in der verknüpften Liste. Wir müssen die Daten und den Zeiger für jeden Knoten in der verknüpften Liste speichern.

Der letzte Knoten in der verknüpften Liste enthält null als nächster Zeiger für das Ende der verknüpften Liste.

Sie können die Abbildung eines unten verlinkten sehen.

Jetzt haben wir ein umfassendes Verständnis für eine einfach verknüpfte Liste. Sehen wir uns die Schritte zur Implementierung in Python an.

Implementierung einer einfach verknüpften Liste

1. Der erste Schritt ist das Erstellen der Knoten für die verknüpfte Liste.

Wie erstelle ich es?

In Pythonkönnen wir das leicht schaffen Knoten Verwendung der Klasse. Die Klasse enthält technische Daten und einem Zeiger für die nächster Knoten.

Sehen Sie sich den Code für den Knoten an.

class Node:

	def __init__(self, data):
		## data of the node
		self.data = data

		## next pointer
		self.next = None

Mit der obigen Klasse können wir den Knoten mit jedem Datentyp erstellen. Wir werden es gleich sehen.

Jetzt haben wir den Knoten bei uns. Als nächstes müssen wir eine verknüpfte Liste mit mehreren Knoten erstellen. Erstellen wir eine weitere Klasse für eine verknüpfte Liste.

2. Erstellen Sie eine Klasse namens VerlinkteListe mit Kopf initialisiert auf Andere. Siehe den Code unten.

class LinkedList:

	def __init__(self):
		## initializing the head with None
		self.head = None

3. Wir haben Knoten funktioniert VerlinkteListe Unterricht bei uns. Wie fügen wir einen neuen Knoten in die verknüpfte Liste ein? Eine einfache Antwort könnte die Verwendung einer Methode in der sein VerlinkteListe Klasse. Ja, das wäre schön. Schreiben wir eine Methode, um einen neuen Knoten in die verknüpfte Liste einzufügen.

Um einen neuen Knoten in die verknüpfte Liste einzufügen, müssen wir bestimmte Schritte ausführen.

Mal sehen.

  • Überprüfen Sie, ob der Kopf leer ist oder nicht.
  • Wenn der Kopf leer ist, weisen Sie dem Kopf den neuen Knoten zu.
  • Wenn der Kopf nicht leer ist, rufen Sie den letzten Knoten der verknüpften Liste ab.
  • Weisen Sie den neuen Knoten dem nächsten Zeiger des letzten Knotens zu.

Sehen wir uns den Code zum Einfügen eines neuen Knotens in die verknüpfte Liste an.

class LinkedList:

	####

	def insert(self, new_node):
		## check whether the head is empty or not
		if self.head:
			## getting the last node
			last_node = self.head
			while last_node != None:
				last_node = last_node.next

			## assigning the new node to the next pointer of last node
			last_node.next = new_node

		else:
			## head is empty
			## assigning the node to head
			self.head = new_node

Hurra! Wir haben die Methode zum Einfügen eines neuen Knotens in die verknüpfte Liste abgeschlossen. Wie können wir über die verknüpfte Liste auf die Knotendaten zugreifen?

Um auf die Daten aus der verknüpften Liste zuzugreifen, müssen wir die verknüpfte Liste mit der durchlaufen nächster Zeiger wie wir es tun, um den letzten Knoten in der Einfügemethode zu erhalten. Schreiben wir eine Methode in die VerlinkteListe Klasse zum Drucken aller Knotendaten in der verknüpften Liste.

4. Führen Sie die folgenden Schritte aus, um alle Knotendaten in der verknüpften Liste zu drucken.

  • Initialisieren Sie eine Variable mit ganzer.
  • Schreiben Sie eine Schleife, die iteriert, bis das Ende der verknüpften Liste erreicht ist.
    • Drucken Sie die Knotendaten.
    • Bewegen Sie den nächsten Zeiger

Mal sehen, den Code.

class LinkedList:

	####

	def display(self):
		## variable for iteration
		temp_node = self.head

		## iterating until we reach the end of the linked list
		while temp_node != None:
			## printing the node data
			print(temp_node.data, end='->')

			## moving to the next node
			temp_node = temp_node.next

		print('Null')

Puh! Wir haben die Erstellung der mit den erforderlichen Methoden verknüpften abgeschlossen. Testen wir die verknüpfte Liste, indem wir sie mit einigen Daten instanziieren.

Wir können den Knoten mit erstellen Knoten (1) Code. Sehen wir uns den vollständigen Code der Implementierung der verknüpften Liste zusammen mit der Beispielverwendung an.

class Node:

	def __init__(self, data):
		## data of the node
		self.data = data

		## next pointer
		self.next = None

class LinkedList:

	def __init__(self):
		## initializing the head with None
		self.head = None

	def insert(self, new_node):
		## check whether the head is empty or not
		if self.head:
			## getting the last node
			last_node = self.head
			while last_node.next != None:
				last_node = last_node.next

			## assigning the new node to the next pointer of last node
			last_node.next = new_node

		else:
			## head is empty
			## assigning the node to head
			self.head = new_node

	def display(self):
		## variable for iteration
		temp_node = self.head

		## iterating until we reach the end of the linked list
		while temp_node != None:
			## printing the node data
			print(temp_node.data, end='->')

			## moving to the next node
			temp_node = temp_node.next

		print('Null')


if __name__ == '__main__':
	## instantiating the linked list
	linked_list = LinkedList()

	## inserting the data into the linked list
	linked_list.insert(Node(1))
	linked_list.insert(Node(2))
	linked_list.insert(Node(3))
	linked_list.insert(Node(4))
	linked_list.insert(Node(5))
	linked_list.insert(Node(6))
	linked_list.insert(Node(7))

	## printing the linked list
	linked_list.display()

Führen Sie das obige Programm aus, um das folgende Ergebnis zu erhalten.

1->2->3->4->5->6->7->Null

Das war's für die verknüpfte Liste. Jetzt wissen Sie, wie Sie eine einfach verknüpfte Liste implementieren. Sie können die doppelt verknüpfte Liste mit dem Wissen der einfach verknüpften Liste einfach implementieren. Lassen Sie uns in den nächsten Abschnitt des Tutorials eintauchen.

#2. Doubly Linked List

Eine doppelt verknüpfte Liste enthält zwei Zeiger mit dem vorheriger Knoten und dem nächster Knoten in der verknüpften Liste. Wir müssen die Daten und zwei Zeiger für jeden Knoten in der verknüpften Liste speichern.

Das vorheriger Zeiger des ersten Knotens ist null und dem nächster Zeiger des letzten Knotens ist null zur Darstellung des Endes der verknüpften Liste auf beiden Seiten.

Sie können die Abbildung eines unten verlinkten sehen.

Die doppelt verknüpfte Liste hat ähnliche Schritte wie die einfach verknüpfte Liste in der Implementierung. Es wird Ihnen langweilig sein, die gleichen Dinge noch einmal zu erklären. Gehen Sie den Code in jedem Schritt durch und Sie werden ihn sehr schnell verstehen. Lass uns gehen.

Implementierung einer doppelt verknüpften Liste

1. Erstellen eines Knotens für die doppelt verknüpfte Liste mit dem vorherigen Knotenzeiger, den Daten und dem nächsten Knotenzeiger.

class Node:

	def __init__(self, data):
		## previous pointer
		self.prev = None

		## data of the node
		self.data = data

		## next pointer
		self.next = None

2. Doppelt verknüpfte Listenklasse.

class LinkedList:

	def __init__(self):
		## initializing the head with None
		self.head = None

3. Eine Methode zum Einfügen eines neuen Knotens in die doppelt verknüpfte Liste.

class LinkedList:

	####

	def insert(self, new_node):
		## check whether the head is empty or not
		if self.head:
			## getting the last node
			last_node = self.head
			while last_node.next != None:
				last_node = last_node.next

			## assigning the last node to the previous pointer of the new node
			new_node.prev = last_node

			## assigning the new node to the next pointer of last node
			last_node.next = new_node

4. Eine Methode zum Anzeigen der doppelt verknüpften Listendaten.

class LinkedList:

	####

	def display(self):

		## printing the data in normal order
		print("Normal Order: ", end='')

		temp_node = self.head
		while temp_node != None:
			print(temp_node.data, end=' ')
			temp_node = temp_node.next
		print()

		## printing the data in reverse order using previous pointer
		print("Reverse Order: ", end='')

		## getting the last node
		last_node = self.head
		while last_node.next != None:
			last_node = last_node.next

		temp_node = last_node
		while temp_node != None:
			print(temp_node.data, end=' ')
			temp_node = temp_node.prev
		print()

Wir haben den Code der doppelt verknüpften Liste gesehen. Und es gibt keinen Code für die Verwendung der doppelt verknüpften Listenklasse. Das ist für dich. Verwenden Sie die doppelt verknüpfte Listenklasse ähnlich der einfach verknüpften Liste. Viel Spaß 🙂

Fazit

Sie können viele Probleme basierend auf verknüpften Listen finden. Sie müssen jedoch die grundlegende Implementierung des Links kennen, die Sie in diesem Lernprogramm gelernt haben. Ich hoffe, Sie hatten viel Spaß beim Erlernen des neuen Konzepts.

Viel Spaß beim Codieren 🙂

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder