Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 14, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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

In diesem Tutorium werden wir uns mit dem einfach verkettete Liste und doppelt verkettete Liste.

Eine verkettete Liste ist eine lineare Datenstruktur. Sie speichert die Daten nicht an zusammenhängenden Speicherplätzen wie Arrays. Und jedes Element in einer verknüpften Liste wird als Knoten und sie werden über die Zeiger. Die erste Knoten in der verknüpften Liste wird als Kopf.

Die Größe der verknüpften Liste ist dynamisch. Wir können also so viele Knoten haben, wie wir wollen, solange der Speicherplatz im Gerät nicht ausreicht.

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

#1. Einzeln verknüpfte Liste

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

Der letzte Knoten in der verknüpften Liste enthält null als nächsten Zeiger, um das Ende der verknüpften Liste darzustellen.

Unten sehen Sie die Abbildung eines Links.

Jetzt haben wir ein umfassendes Verständnis einer einfach verketteten Liste. Schauen wir uns die Schritte an, um sie in Python zu implementieren.

Implementierung einer einfach verknüpften Liste

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

Wie erstellt man sie?

Unter Pythonkönnen wir leicht die Knoten unter Verwendung der Klasse. Die Klasse enthält Daten und eine 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 jeder Art von Daten 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. Lassen Sie uns eine weitere Klasse für eine verkettete Liste erstellen.

2. Erstellen Sie eine Klasse namens LinkedList mit Kopf initialisiert zu Keine. Siehe den nachstehenden Code.

class LinkedList:

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

3. Wir haben Knotenpunkt und LinkedList Klassen mit uns. Wie fügt man einen neuen Knoten in die verknüpfte Liste ein? Eine einfache Antwort könnte die Verwendung einer Methode in der Klasse LinkedList 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 befolgen.

Zeigen Sie sie uns.

  • Prüfen Sie, ob der Kopf leer ist oder nicht.
  • Wenn der Kopf leer ist, wird der neue Knoten dem Kopf zugeordnet.
  • Wenn der Kopf nicht leer ist, wird der letzte Knoten der verknüpften Liste ermittelt.
  • Weisen Sie den neuen Knoten dem letzten Knoten next pointer 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 auf die Daten des Knotens in der verknüpften Liste zugreifen?

Um auf die Daten aus der verknüpften Liste zuzugreifen, müssen wir die verknüpfte Liste mit der Methode nächster Zeiger wie wir es tun, um den letzten Knoten in der Einfügemethode zu erhalten. Schreiben wir eine Methode innerhalb der LinkedList Klasse, um alle Daten der Knoten in der verknüpften Liste zu drucken.

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

  • Initialisieren Sie eine Variable mit Kopf.
  • Schreiben Sie eine Schleife, die so lange wiederholt wird, bis das Ende der verknüpften Liste erreicht ist.
    • Drucken Sie die Daten des Knotens.
    • Bewegen Sie den nächsten Zeiger

Schauen wir uns den Code an.

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 verknüpften Liste mit den erforderlichen Methoden abgeschlossen. Testen wir die verknüpfte Liste, indem wir sie mit einigen Daten instanziieren.

Wir können den Knoten erstellen mit Knoten(1) Code. Sehen wir uns den vollständigen Code der Implementierung der verknüpften Liste zusammen mit dem Anwendungsbeispiel 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 mit der verknüpften Liste. Jetzt wissen Sie, wie man eine einfach verkettete Liste implementiert. Mit dem Wissen über die einfach verkettete Liste können Sie leicht die doppelt verkettete Liste implementieren. Tauchen wir ein in den nächsten Abschnitt des Tutorials.

#2. Doppelt verknüpfte Liste

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

Die vorheriger Zeiger des ersten Knotens ist null und die nächster Zeiger des letzten Knotens ist null um das Ende der verketteten Liste auf beiden Seiten darzustellen.

Unten sehen Sie die Abbildung eines Links.

Die doppelt verkettete Liste hat auch ähnliche Schritte wie die einfach verkettete Liste in der Umsetzung. Nochmals die gleichen Dinge zu erklären, wird für Sie langweilig sein. Gehen Sie den Code in jedem Schritt durch und Sie werden ihn sehr schnell verstehen. Los geht's.

Implementierung einer doppelt verknüpften Liste

1. Erstellen eines Knotens für die doppelt verkettete Liste mit dem Zeiger auf den vorherigen Knoten, den Daten und dem Zeiger auf den nächsten Knoten.

class Node:

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

		## data of the node
		self.data = data

		## next pointer
		self.next = None

2. Klasse der doppelt verknüpften Listen.

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 verkettete 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 zur Anzeige der Daten der doppelt verknüpften Liste.

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 verketteten Liste gesehen. Und es gibt keinen Code für die Verwendung der doppelt verknüpften Listenklasse. Das ist für Sie. Verwenden Sie die Klasse der doppelt verketteten Liste ähnlich wie die einfach verkettete Liste. Viel Spaß 🙂 .

Schlussfolgerung

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

Prüfen Sie auch, wie Sie die Python-Index Methode, um den Index eines Elements in einer Liste zu finden.

Viel Spaß beim Codieren 😀

  • Hafeezul Kareem Shaik
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder