Implementieren einer verknüpften Listendatenstruktur in JavaScript?

Implementieren einer verknüpften Listendatenstruktur in JavaScript?

JavaScript ist eine Webprogrammiersprache. JavaScript bietet uns wie jede andere Programmiersprache Arrays, bei denen es sich um eine Sammlung verschiedener Elemente handelt, die in einer einzelnen Variablen gespeichert sind. Die Einschränkung eines Arrays besteht darin, dass es nacheinander in einem bestimmten Speicher in unserem System gespeichert ist, um dieses Problem zu lösen, verwenden wir eine verknüpfte Liste.

Verlinkte Liste

Die verknüpften Listen sind wie Arrays, außer dass in einer verknüpften Liste die Elemente nicht in einem bestimmten Speicherort oder in einem Index gespeichert werden und jedes Element ein separates unabhängiges Objekt ist, das mit dem nächsten Element verbunden ist, indem ein Zeiger oder ein Link zu diesem Element geleitet wird.

Jede verknüpfte Liste enthält einen Kopf (erster Knoten), Länge (Größe der verknüpften Liste) und einen Schwanz (Last Knode), und jedes Element in einer verknüpften Liste wird als Knoten bezeichnet und jeder Knoten hat einen Wert, der darin gespeichert ist und speichert und Der Link zum nächsten Knoten. Wenn der aktuelle Knoten der Schwanz ist, ist der Link Null, der nicht auf einen anderen Knoten zeigt. Die verknüpfte Liste enthält keine Indizes im Gegensatz zu Arrays mit Indizes e.g 0,1,2… und so weiter.

Verbindete Listen in JavaScript können wie folgt demonstriert werden:

// verlinkte Liste
const linkedList =
// Jeder Knoten hat einen Wert und Zeiger
// Erster Zeiger ist der Header
Kopf:
Wert: 6
nächste:
Wert: 10
nächste:
Wert: 12
nächste:
Wert: 3
Weiter: null





;

Linked List -Vorteil ist, dass Elemente (Knoten) leicht hinzugefügt und aus der verknüpften Liste entfernt werden, ohne die gesamte verknüpfte Liste anzupassen. Der Nachteil einer verknüpften Liste ist, dass sie mehr Speicher für den Speicher benötigt, da wir jetzt einen zusätzlichen Zeiger haben, den wir zusammen mit dem Wert des Elements speichern.

Linked Listen sind drei Typen, die unten beschrieben werden:

  • Die einzig verknüpfte Liste hat nur einen Zeiger, der auf den Knoten daneben zeigt.
  • Das doppelt verknüpfte doppelt verknüpfte Zwei-Punkte.
  • Die kreisförmige verknüpfte Liste, deren Schwanz einen Zeiger auf den Kopf enthält und daher einen Zyklus bildet.

Linked List Implementierung

Lassen Sie uns zunächst einen Knoten erstellen, der zwei Eigenschaften eines Wertes und einen Zeiger hat, für den wir eine Klasse mit dem Namen von erstellen werden Listnode Das hat diese beiden Eigenschaften:

Klassenlistennode
Konstruktor (Wert)
Das.Wert = Wert
Das.Weiter = null

Nachdem wir nun wissen, wie Sie einen Knoten erstellen, lassen Sie uns eine verknüpfte Liste erstellen, in der der Standardwert des Kopfes null ist:

Klasse LinkedList
Konstruktor (head = null)
Das.Kopf = Kopf

Lassen Sie uns nun die verknüpfte Liste mit zwei Knoten initialisieren und einen Zeiger vom Kopf oder Knoten 1 zum zweiten Knoten hinzufügen:

var node1 = neuer listNode (3);
var node2 = neuer ListNode (4);
Node1.next = node2;

Der nächste Schritt besteht darin, die verknüpfte Liste auf folgende Weise mit Node1 zu initialisieren:

var list = new LinkedList (Node1);

Der gesamte Code ist unten angegeben, wobei die Konsole des Node2 -Wertes angemeldet ist:

// Knoten erstellen
Klassenlistennode
Konstruktor (Wert)
// Konstruktorinitialisierungswert und der nächste Zeiger initialisieren
Das.Wert = Wert
Das.Weiter = null


Klasse LinkedList
// Linked List Constructor
Konstruktor (head = null)
Das.Kopf = Kopf


// Erstellte Knoten initialisieren
var node1 = neuer listNode (3);
var node2 = neuer ListNode (4);
Node1.next = node2;
// Initialisieren der verknüpften Liste initialisieren
var list = new LinkedList (Node1);
// Ausgabe des zweiten Knotens anzeigen
Konsole.Protokoll (Liste.Kopf.nächste.Wert) // 4

Verbindete Listenmethoden

Nachdem wir nun mit der Implementierung der verlinkten Liste fertig sind, lassen Sie uns die verknüpfte Liste abspielen oder manipulieren, indem wir weitere Methoden implementieren, um die verknüpften Listen (Helfer -Methoden) zu verwenden:

Die erste Helfermethode, die wir definieren werden, ist die Größe() Methode in der Klasse LinkedList Dies gibt die Länge der verlinkten Liste zurück:

size = () =>
lass count = 0;
lass node = this this.Kopf;
// Schleife über die verknüpfte Liste zu iterieren
while (knoten)
zählen ++;
node = node.nächste

Rückgabezahl;

In diesem Code erklären wir zunächst eine Dummy -Variable zählen Lagern Sie 0 darin und speichern Sie dann den Zeiger des Kopfes in der Knoten Variable. Dann haben wir eine Schleife erklärt, die über die verlinkte Liste iteriert und die inkrementiert wird zählen Variable.

Die nächste Helfermethode ist die GetFirst () Methode, bei der der Kopfzeiger zurückgegeben wird:

getFirst = () =>
Geben Sie dies zurück.Kopf.Wert;

Wir können auch den letzten Knoten der verknüpften Liste folgendermaßen erhalten:

getLast = () =>
lass lastnode = this.Kopf;
if (lastnode)
während (LastNode.nächste)
LastNode = Nachnode.nächste


Rückgabe Lastnode.Wert

Der gesamte Code wird jetzt unten angegeben, wobei die Ausgabe des zweiten Knotenwerts, die Größe der verknüpften Liste, der erste Knotenwert und den letzten Knotenwert in derselben Reihenfolge angezeigt wird:

// Knoten erstellen
Klassenlistennode
Konstruktor (Wert)
Das.Wert = Wert
Das.Weiter = null


// Linked List erstellen
Klasse LinkedList
Konstruktor (head = null)
Das.Kopf = Kopf

size = () =>
lass count = 0;
lass node = this this.Kopf;
// Schleife über die verknüpfte Liste zu iterieren
while (knoten)
zählen ++;
node = node.nächste

Rückgabezahl;

getFirst = () =>
Geben Sie dies zurück.Kopf.Wert;

getLast = () =>
lass lastnode = this.Kopf;
if (lastnode)
während (LastNode.nächste)
LastNode = Nachnode.nächste


Rückgabe Lastnode.Wert


// Erstellte Knoten initialisieren
var node1 = neuer listNode (3);
var node2 = neuer ListNode (4);
Node1.next = node2;
// Initialisieren der verknüpften Liste initialisieren
var list = new LinkedList (Node1);
// Ausgabe des zweiten Knotens anzeigen
Konsole.Log ("Zweiter Knotenwert:", Liste.Kopf.nächste.Wert) // 4
// Größe der verknüpften Liste anzeigen
Konsole.Log ("Größe der verknüpften Liste:", Liste.Größe());
// Zeigen Sie den ersten Knotenwert
Konsole.Log ("Erster Knotenwert:", Liste.getFirst ());
// Zeigen Sie den letzten Knotenwert
Konsole.Log ("Last Knode Value:", Liste.getLast ());

Abschluss

Nach Arrays ist eine verknüpfte Liste die am zweithäufigsten verwendete Datenstruktur in jeder Programmiersprache. Eine verknüpfte Liste ist wie ein Array, das eine Sammlung verschiedener Elemente speichert, wobei der Unterschied darin besteht Der zweite Unterschied besteht darin, dass die Elemente nicht in einem bestimmten Speicherort in einer verknüpften Liste gespeichert werden.

In diesem Beitrag haben wir gesehen, welche verknüpften Listen sind, die Vor- und Nachteile verknüpfter Listen, die Arten von verknüpften Listen und die Implementierung der verknüpften Listendatenstruktur in JavaScript.