Hi Leute,
wie der Titel schon sagt, geht es um Rekursion und verkette Listen.
Hier erstmal der Quelltext zum Problem:
Habe folgendes Problem:
Ich kann das zweite Element nicht löschen.
Die Testausgabe bei der Methode
sagt mir, dass ich beim zweiten Element bin. Also muss ich nach meinem Verständnis einfach das zweite Element auf seinen Nachfolger(nf), also das dritte Element, zeigen lassen. Es tut sich aber nichts, bei erneuter Ausgabe der Liste ist das zweite Element nach wie vor vorhanden.
Und noch eine andere Frage:
Bei der Methode
ändert sich nichts an der Funktion des Programms, wenn ich im else-Zweig anstatt aktuell.nf nur aktuell übergebe. Normalerweise müsste der doch dann immer beim kopf bleiben.
Vielen Dank schonmal für eure Zeit!
wie der Titel schon sagt, geht es um Rekursion und verkette Listen.
Hier erstmal der Quelltext zum Problem:
Code:
class DieGuteAlteListe {
Element kopf, fuss;
public void hinzufuegen (Element neu, int index) {
if (index >= 1 && neu != null)
if (index == 1) {
kopf = fuss = neu;
}
else {
Element aktuell = kopf;
hinzufuegen_R (aktuell, neu, index);
}
}
private void hinzufuegen_R (Element aktuell, Element neu, int index) {
if (index == 1) {
aktuell = neu;
fuss.nf = neu;
fuss = fuss.nf;
}
else {
hinzufuegen_R (aktuell.nf, neu, index-1);
}
}
public Element entferne(int index) {
Element temp = null;
if (index == 1) {
temp = kopf;
kopf = kopf.nf;
return temp;
}
else {
Element aktuell = kopf;
return entferne_R (aktuell, temp, index);
}
}
private Element entferne_R(Element aktuell, Element temp, int index) {
if (index == 1) {
temp = aktuell;
System.out.println("CHECK: "+aktuell.bez);
aktuell = aktuell.nf;
}
else entferne_R(aktuell.nf, temp, index-1);
return temp;
}
public void print () {
Element aktuell = kopf;
while (aktuell != null) {
aktuell.printElement();
aktuell = aktuell.nf;
}
System.out.println();
}
}
Code:
public class Aufg1 {
public static void main(String[] args) {
Element test1 = new Element();
test1.bez = "erstes Element";
Element test2 = new Element();
test2.bez = "zweites Element";
Element test3 = new Element();
test3.bez = "drittes Element";
Element test4 = new Element();
test4.bez = "viertes Element";
DieGuteAlteListe l = new DieGuteAlteListe();
l.hinzufuegen(test1, 1);
l.hinzufuegen(test2, 2);
l.hinzufuegen(test3, 3);
l.hinzufuegen(test4, 4);
l.print();
l.entferne(2);
l.print();
}
}
Code:
class Element {
String bez = "";
Element nf;
public void printElement() {
System.out.println(bez);
}
}
Habe folgendes Problem:
Ich kann das zweite Element nicht löschen.
Die Testausgabe bei der Methode
Code:
private Element entferne_R(Element aktuell, Element temp, int index)
Und noch eine andere Frage:
Bei der Methode
Code:
private void hinzufuegen_R (Element aktuell, Element neu, int index)
Vielen Dank schonmal für eure Zeit!
Zuletzt bearbeitet: