# EINFACH VERKETTET LISTE (JAVA) -



## REaXNo0B (9. Nov 2021)

Geehrte Forum Mitglieder,

sehr schätze ich diese Portal und als Anfänger in der "Java-Szene" möchte ich mich wirklich weiterbilden. Ehrlich gesagt bin ich mir nicht sicher, ob dieser Beitrag hier hingehört, das es kein "Hausaufgabe" im klassischen Sinne ist. 
Erfolgreich bin ich einige Datenstrukturen wie das Array, den Stapel (Stack) etc. mit einigen Beispielen aus verschiedene Unterrichtsmaterialien im Internet durchgegangen.
Nun bin ich auf die einfach verkettete Liste zugestoßen und ich muss feststellen, dass ich mich in der Praxis schwer tue. Die Grundlagen und die wichtigsten Informationen, also Methoden der Datenstruktur sind mir bekannt. Doch wie gesagt stehe ich sehr auf dem Schlauch, wenn es um einige Aufgaben geht. Auf anderen Portalen finde ich leider nicht das, was ich gerne lernen möchte. Häufig stoße ich auf sogenannte Arraylist, die ich in meinen ersten Schritten noch nicht brauche. Ich bin mir relativ sicher, wenn ich ein Lösungsweg dargestellt bekommen, dass ich darauf aufbauen kann und mich dementsprechend steigern kann.

Deshalb hätte ich folgendes Szenario, wenn Sie erlauben (für das Training nutze ich BlueJ):

Es gibt drei Klassen:

Die Klasse List (welche man einfach in das Projekt importieren kann)
Die Klasse Wort
Die Klasse Woerterbuch


Dabei spielt die Klasse "Wort" keine Zentrale Rolle, deshalb würde dieser Quelltext vollkommen reichen:

public class Wort
{
    private String name;

    public Wort(String name)
    {
         name = this.name;
    }

    public String getname() {
        return name;
    }
}

Anders sieht es bei der Klasse Woerterbuch aus. Dort kommt nämlich die Deklaration, die Initialisierung und das Einfügen der Objekte. Da der Vorgang so ähnlich wie bei der Queue ist, außer das sich die Methoden ändern würde die Implantation folgendermaßen aussehen:

public class Woerterbuch
{
    private List<Wort> liste;

    public Woerterbuch() {
        liste = new List<Wort>();

        liste.append(new Wort ("Gelb"));
        liste.append(new Wort ("Grün"));
        liste.append(new Wort ("Rot"));
    }

Da diese allerdings nicht reicht, möchte ich natürlich ein paar Methoden hinzufügen. Ich hätte sogar ein paar Ideen, jedoch habe ich bei der Implementierung Probleme und bräuchte wirklich Hilfe, wenn Sie erlauben. Machen diese "Ideen" auch wirklich Sinn? Vor allem habe ich Probleme, den Zeiger zu setzten bzw. ich Weiß ehrlich gesagt nicht wie dies genau funktioniert. Ich hoffe sehr, dass jemand Vorschläge bietet.

1. public boolean ist_leer() {
        return liste.isEmpty();
    }
( Ist das richtig? )

2. public Wort zeige_erstes Wort() {}

(?)
3. public Wort zeige_Wort(int index) {}

(?)
4. public void wort_ans_Ende_einfuegen(Wort w) {}

(?)
5. public void wort_am_Anfang_einfügen(Wort w) {}

(?)
6. public void wort_an_stelle_i_einfügen(Wot w, int i) {}

(?)
7. public void entferne_erstes_element() {}

(?)
8. public void entferne_element(int index) {}

(?)
9. public void zeige_uebersicht() {}

(?)

Ich persönlich finde, dass die Methoden passen (kann mich aber auch täuschen). Ich versteh echt nicht warum ich mich schwer tue. Vielleicht ist es auch "zu einfach".

Naja, ich hoffe sehr, dass jemand Lösungsvorschläge bietet oder Ansätze.

Danke im Voraus 

Liebe Grüße


----------



## mihe7 (9. Nov 2021)

Wenn Du eine verkettete Liste implementieren sollst, dann darfst Du natürlich keine existierenden Listen-Implementierungen verwenden.

Was Du im Wesentlichen brauchst, wäre eine Klasse für den Wörterbucheintrag. Diese hat ein Attribut für das Wort und ein Attribut für den nächsten Wörterbucheintrag. Die Wörterbucheinträge bilden also eine Kette - daher verkettete Liste. In Wörterbuch selbst hast Du dann nur ein Attribut für den ersten Eintrag im Wörterbuch.


----------

