Wie man eine Verkettete Liste Datenstruktur in Java erstellt

Eine Datenstruktur zu erstellen, die effektiv eine Sammlung von Elementen verwaltet, kann in der Programmierung eine Herausforderung darstellen. Eine der am häufigsten verwendeten Strukturen ist die Verkettete Liste. In diesem Blogbeitrag führen wir Sie durch den Prozess der Erstellung einer Verketteten Liste in Java, selbst wenn es bereits eine integrierte Klasse in der Java-Standardbibliothek gibt.

Das Problem verstehen

Wenn Sie an Datenstrukturen denken, denken Sie vielleicht an Arrays, aber manchmal sind diese unzureichend. Hier kommen verkettete Listen ins Spiel. Eine Verkettete Liste ermöglicht es Ihnen, Elemente effizient einzufügen und zu löschen, ohne ein Array neu zu dimensionieren. Sie besteht aus einer Sequenz von Knoten, wobei jeder Knoten Daten und eine Referenz auf den nächsten Knoten enthält.

Die integrierte Option

Java bietet eine integrierte LinkedList-Klasse im Paket java.util, die praktisch und in vielen Situationen geeignet ist. Allerdings kann das Erstellen einer eigenen Implementierung Ihr Verständnis vertiefen und Ihnen mehr Kontrolle über das Verhalten der Datenstruktur geben.

Erstellen Sie Ihre eigene Verkettete Liste

Im Folgenden werden wir untersuchen, wie wir eine einfache Verkettete Liste von Grund auf neu erstellen können. In diesem Tutorial konzentrieren wir uns auf eine einfach verkettete Liste, die das Einfügen und Löschen von Knoten vom Anfang aus ermöglicht.

Zunächst müssen wir eine Link-Klasse erstellen, um jedes Element in der Liste darzustellen. So sieht es im Code aus:

class Link {
    public int data1;
    public double data2;
    public Link nextLink;

    // Link-Konstruktor
    public Link(int d1, double d2) {
        data1 = d1;
        data2 = d2;
    }

    // Link-Daten ausgeben
    public void printLink() {
        System.out.print("{" + data1 + ", " + data2 + "} ");
    }
}

Als Nächstes benötigen wir eine Klasse für die gesamte Liste:

class LinkList {
    private Link first;

    // LinkList-Konstruktor
    public LinkList() {
        first = null;
    }

    // Gibt true zurück, wenn die Liste leer ist
    public boolean isEmpty() {
        return first == null;
    }

    // Fügt einen neuen Link am Anfang der Liste ein
    public void insert(int d1, double d2) {
        Link link = new Link(d1, d2);
        link.nextLink = first;
        first = link;
    }

    // Löscht den Link am Anfang der Liste
    public Link delete() {
        Link temp = first;
        if (first == null) {
            return null; // oder Ausnahme werfen
        }
        first = first.nextLink;
        return temp;
    }

    // Gibt alle Links in der Liste aus
    public void printList() {
        Link currentLink = first;
        System.out.print("Liste: ");
        while (currentLink != null) {
            currentLink.printLink();
            currentLink = currentLink.nextLink;
        }
        System.out.println("");
    }
}

Schließlich implementieren wir eine Hauptmethode, um unsere Verkettete Liste zu testen:

class LinkListTest {
    public static void main(String[] args) {
        LinkList list = new LinkList();

        // Fügen Sie einige Elemente ein
        list.insert(1, 1.01);
        list.insert(2, 2.02);
        list.insert(3, 3.03);
        list.insert(4, 4.04);
        list.insert(5, 5.05);

        // Geben Sie die Liste aus
        list.printList();

        // Elemente löschen
        while (!list.isEmpty()) {
            Link deletedLink = list.delete();
            System.out.print("gelöscht: ");
            deletedLink.printLink();
            System.out.println("");
        }
        list.printList();
    }
}

Fazit

In diesem Blogpost haben wir untersucht, wie man eine benutzerdefinierte Verkettete Liste in Java erstellt, die über grundlegende Methoden zum Einfügen, Löschen und Ausgeben von Knoten verfügt. Während die native LinkedList-Klasse in Javas Standardbibliothek für viele Anwendungen ausreichen mag, kann die Implementierung Ihrer eigenen eine lohnende Erfahrung sein, die Ihre Programmierfähigkeiten verbessert.

Weitere Verbesserungen

Nachdem Sie diese grundlegende Implementierung beherrscht haben, ziehen Sie in Betracht, Folgendes hinzuzufügen:

  • Doppelt verkettete Liste: Jeder Knoten sollte Referenzen auf sowohl den nächsten als auch den vorherigen Knoten haben.
  • Einfügen/Löschen in der Mitte/Am Ende: Methoden zum Hinzufügen oder Entfernen von Knoten aus verschiedenen Positionen.
  • Get- und Sortiermethoden: Funktionen zum Abrufen bestimmter Elemente oder zum Sortieren der verketteten Liste.

Sich mit diesen Verbesserungen vertraut zu machen, kann Ihre Fähigkeiten auf die nächste Stufe heben. Viel Spaß beim Programmieren!