Guten Tag liebe Leute,
ich bräuchte bitte einen Tipp oder einen Denkanstoß in die richtige Richtung. Ich zerbreche mir nun schon seit Wochen den Schädel über eine Aufgabe aus meinem Java-Kurs und bekomme ich es einfach nicht hin. Ich scheine da auch nicht allein zu sein, weil ich dieses Listing schon ein paar mal hier im Forum gefunden habe - nur kann ich mit den Lösungsansätzen dort nicht wirklich was anfangen. Hier erstmal da Listing und dann mein Lösungsansatz mit den Fragen dazu:
Die Aufgabe lautet:
Erweitern Sie das Programm 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.
So weit so gut, die Aufgaben Stellung ist eigentlich klar. Nun mein Lösungsansatz, den ich aber nicht hinbekomme.
Ich würde die Klasse um ein Element erweitern, so dass Sie jetzt ein Feld "Listenelement letzter" enthält, welches ich nur im ersten Knoten speichern will, alle anderen sollen null sein. Wenn ich jetzt einen neuen Knoten anlegen will möchte ich ihm sagen, dass er ein neuen Knoten nach "letzter" anlegt und dann den neue angelegten Knoten in letzter referenzieren, aber ich bekomme es nicht hin.
Mache ich irgendwo einen Denkfehler?
Vielen Dank und viele Grüße
Red
ich bräuchte bitte einen Tipp oder einen Denkanstoß in die richtige Richtung. Ich zerbreche mir nun schon seit Wochen den Schädel über eine Aufgabe aus meinem Java-Kurs und bekomme ich es einfach nicht hin. Ich scheine da auch nicht allein zu sein, weil ich dieses Listing schon ein paar mal hier im Forum gefunden habe - nur kann ich mit den Lösungsansätzen dort nicht wirklich was anfangen. Hier erstmal da Listing und dann mein Lösungsansatz mit den Fragen dazu:
Java:
package liste;
class Listenelement {
String daten;
Listenelement naechster;
void setDaten(String datenNeu) {
daten = datenNeu;
naechster = null;
}
void anhaengen(String datenNeu) {
if (naechster == null) {
naechster = new Listenelement();
naechster.setDaten(datenNeu);
}
else
naechster.anhaengen(datenNeu);
}
void ausgeben() {
System.out.println(daten);
if (naechster != null)
naechster.ausgeben();
}
}
public class Liste {
public static void main(String[] args) {
Listenelement listenAnfang = new Listenelement();
listenAnfang.setDaten("Element 1");
for (int element = 2; element < 4; element++)
listenAnfang.anhaengen("Element " + element);
listenAnfang.ausgeben();
}
}
Die Aufgabe lautet:
Erweitern Sie das Programm 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.
So weit so gut, die Aufgaben Stellung ist eigentlich klar. Nun mein Lösungsansatz, den ich aber nicht hinbekomme.
Ich würde die Klasse um ein Element erweitern, so dass Sie jetzt ein Feld "Listenelement letzter" enthält, welches ich nur im ersten Knoten speichern will, alle anderen sollen null sein. Wenn ich jetzt einen neuen Knoten anlegen will möchte ich ihm sagen, dass er ein neuen Knoten nach "letzter" anlegt und dann den neue angelegten Knoten in letzter referenzieren, aber ich bekomme es nicht hin.
Mache ich irgendwo einen Denkfehler?
Vielen Dank und viele Grüße
Red