Hallo,
ich habe eine selbstgeschriebene Klasse List und für die Knoten die Klasse ListNode entworfen. In der Klasse ListNode soll jetzt die Methode funktionale Methode ListNode<E> invert() implementiert werden. Diese Methode gibt alle Elemente der Liste in umgedrehter Reihenfolge zurück. Aus der Liste mit den Elementen 1,2,3 soll also die Liste 3,2,1 werden.
Auch in der List-Klasse wurde die invert(), allerdings ohne Rückgabetyp, implementiert, die den head der Liste die invert()-Methode von ListNode aufrufen lässt. Rufe ich in einer Testklasse mittels list.invert() diese Methode auf, bleibt die Reihenfolge der Elemente jedoch unverändert.
Liste:
Wieso funktioniert diese invert()-Methode nicht?
Vielen Dank für Eure Hilfe!!
ich habe eine selbstgeschriebene Klasse List und für die Knoten die Klasse ListNode entworfen. In der Klasse ListNode soll jetzt die Methode funktionale Methode ListNode<E> invert() implementiert werden. Diese Methode gibt alle Elemente der Liste in umgedrehter Reihenfolge zurück. Aus der Liste mit den Elementen 1,2,3 soll also die Liste 3,2,1 werden.
Auch in der List-Klasse wurde die invert(), allerdings ohne Rückgabetyp, implementiert, die den head der Liste die invert()-Methode von ListNode aufrufen lässt. Rufe ich in einer Testklasse mittels list.invert() diese Methode auf, bleibt die Reihenfolge der Elemente jedoch unverändert.
Liste:
Java:
public class List<E> {
protected ListNode<E> head = null;
public List(E value) {
head = new ListNode(value, null);
}
public List() {
}
public void addFirst(E e) {
if (isEmpty()) {
head = new ListNode(e); // neuer Head-Knoten.
} else {
head = head.addFirst(e);
}
}
public void invert() {
head.invert();
}
}
Java:
public class ListNode<E> {
public E value;
public static int counter = 0;
public ListNode<E> next = null;
public ListNode(E value, ListNode<E> n) {
this.value = value;
next = n;
}
public ListNode(E value) {
this.value = value;
}
public E getHead() {
return value;
}
public ListNode<E> getTail() {
return next;
}
public ListNode<E> addFirst(E value) {
return new ListNode<>(value, this);
}
ListNode<E> invert(){
if (getTail() == null) {
return this.addFirst(value);
} else {
return getTail().invert();
}
}
}
Wieso funktioniert diese invert()-Methode nicht?
Vielen Dank für Eure Hilfe!!