Hi Freunde,
ich stehe bei einer Aufgabe zur Erweiterung der einfach verketteten Liste auf dem Schlauch:
Hier folgende Aufgabenstellung:
Erweitern Sie die zweite Version der einfach verketteten Liste so, dass das Listenende
beim Anhängen nicht immer wieder neu ermittelt werden muss, sondern neue Elemente
direkt am Ende der Liste angehängt werden können. Hängen Sie zum Test
mindestens 20 Elemente an.
Dazu ein paar Hilfestellungen:
• Sie müssen neben dem Anfang der Liste jetzt auch das Ende der Liste in einer
Variablen speichern können.
• Erstellen Sie eine Methode, die Ihnen das aktuelle Ende der Liste zurückliefert.
Alternativ können Sie sich das Listenende auch von der Methode zum Anhängen
liefern lassen.
• Setzen Sie den Wert der Variablen für das Listenende nach dem Anhängen neuer
Elemente jeweils auf das aktuelle Ende der Liste und rufen Sie dann die Methode
zum Anhängen neuer Listenelemente mit diesem Wert neu auf.
Und hier der Code:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ich habe schon sämtliche Sachen ausprobiert wie ein 2. Objekt (listenEnde) zu erstellen, in der Main sowie in der Klasse Listenelement und dann auch versucht sie dort zu ändern bzw. das Ende neu zu setzen, aber irgendwie bekomme ich den Dreh nicht rein. Irgendwas mache ich verkehrt, nur was?
Vielen Dank im Voraus
ich stehe bei einer Aufgabe zur Erweiterung der einfach verketteten Liste auf dem Schlauch:
Hier folgende Aufgabenstellung:
Erweitern Sie die zweite Version der einfach verketteten Liste so, dass das Listenende
beim Anhängen nicht immer wieder neu ermittelt werden muss, sondern neue Elemente
direkt am Ende der Liste angehängt werden können. Hängen Sie zum Test
mindestens 20 Elemente an.
Dazu ein paar Hilfestellungen:
• Sie müssen neben dem Anfang der Liste jetzt auch das Ende der Liste in einer
Variablen speichern können.
• Erstellen Sie eine Methode, die Ihnen das aktuelle Ende der Liste zurückliefert.
Alternativ können Sie sich das Listenende auch von der Methode zum Anhängen
liefern lassen.
• Setzen Sie den Wert der Variablen für das Listenende nach dem Anhängen neuer
Elemente jeweils auf das aktuelle Ende der Liste und rufen Sie dann die Methode
zum Anhängen neuer Listenelemente mit diesem Wert neu auf.
Und hier der Code:
Java:
//die Klasse für die Listenelemente
//jetzt auch mit Methoden
class Listenelement {
String daten;
Listenelement naechster;
//die Methode zum Setzen der Daten
void setDaten(String datenNeu) {
//die Zeichenkette setzen
daten = datenNeu;
//das Ende markieren
naechster = null;
}
//die Methode zum Anhängen eines neuen Elements
//sie ruft sich rekursiv auf, bis das Ende erreicht ist
void anhaengen(String datenNeu) {
//wenn das Ende erreicht ist, ein neues Element erzeugen
if (naechster == null) {
naechster = new Listenelement();
naechster.setDaten(datenNeu);
}
//sonst ruft sich die Methode selbst wieder auf
else {
naechster.anhaengen(datenNeu);
}
//nur zur Veranschaulichung
System.out.println("Daten " + datenNeu + " wurden eingefügt.");
}
//die Methode zur Ausgabe der Liste
//sie ruft sich ebenfalls rekursiv auf, bis das Ende erreicht ist
void ausgeben() {
System.out.println(daten);
if (naechster != null)
naechster.ausgeben();
}
}
Java:
public class Main {
public static void main(String[] args) {
Listenelement listenAnfang = new Listenelement();
//die Daten im ersten Listenelement setzen
listenAnfang.setDaten("Element 1");
//weitere Elemente in einer Schleife einfügen
for (int element = 2; element < 4; element++)
listenAnfang.anhaengen("Element " + element);
//die Liste ausgeben
listenAnfang.ausgeben();
}
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ich habe schon sämtliche Sachen ausprobiert wie ein 2. Objekt (listenEnde) zu erstellen, in der Main sowie in der Klasse Listenelement und dann auch versucht sie dort zu ändern bzw. das Ende neu zu setzen, aber irgendwie bekomme ich den Dreh nicht rein. Irgendwas mache ich verkehrt, nur was?
Vielen Dank im Voraus