Elemente in Liste einfügen

seppi65

Mitglied
Hallo Leute ich bin gerade dabei bei meinem Studium Listen zu lernen, ich soll folgende Methode schreiben:

(c): Die Methode insertLastRek in der Klasse BoxListe soll eine als Parameter übergebene Box in einem neuen Listenelement kapseln und dieses am Ende der Liste einfügen. Die Methode ist hierzu überladen:die vorgegebene Version mit einem Parameter ruft die zweite Version der Methode mit zwei Parametern auf, welche rekursiv arbeiten soll. Hierzu soll die Methode stets prüfen, ob das als Parameter übergebene Element bereits das letzte, echte Element der Liste ist. Ist dies der Fall, soll die als Parameter übergebene Box mit Hilfe der Methode insert (aus Aufgabenteil (b)) in die Liste eingefügt werden. Ist dies nicht der Fall, soll die Methode sich selbst mit der Box und dem jeweils auf das als Parameter übergebene Listenelement folgende Element aufrufen.

Meine Methode sieht zur Zeit so aus:

public void insertLastRek(Box b){
insertLastRek(b, head);
}

private void insertLastRek(Box b, Listenelement e){
Listenelement t = new Listenelement(b);
Listenelement u = head.next;
while ( e !=z){
u = e;
e = e.next;
}
t = u.next;
z = t.next;
}


Wenn ich nun meine Liste mit der Methode liste.print() ausgeben möchte, passiert nichts.

Hier die Methode print()
Listenelement ele = head.next;
while ( ele !=z){
ele.box.print();
ele = ele.next;
}
}

Der Code compiliert fehlerfrei allerdings wird die Liste nicht ausgegeben, daher glaube ich, dass ich einen Fehler bei meiner Einfügmethode habe. Ich hoffe ihr könnt mir helfen. Vielen Dank!
 
Bitte immer in Code-Tags posten.

Java:
	public void insertLastRek(Box b) {
		insertLastRek(b, head);
	}

	private void insertLastRek(Box b, Listenelement e) {
		Listenelement t = new Listenelement(b);
		Listenelement u = head.next;
		while (e != z) {
			u = e;
			e = e.next;
		}
		t = u.next;
		z = t.next;
	}

Java:
	public void print() {
		Listenelement ele = head.next;
		while (ele != z) {
			ele.box.print();
			ele = ele.next;
		}
	}
 
welche rekursiv arbeiten soll.
Du hast eine Schleife -> nix rekursiv.

Die Aufgabenbeschreibung ist dermaßen genau, das kannst Du 1:1 in Code übersetzen:
Hierzu soll die Methode stets prüfen, ob das als Parameter übergebene Element bereits das letzte, echte Element der Liste ist. Ist dies der Fall, soll die als Parameter übergebene Box mit Hilfe der Methode insert (aus Aufgabenteil (b)) in die Liste eingefügt werden. Ist dies nicht der Fall, soll die Methode sich selbst mit der Box und dem jeweils auf das als Parameter übergebene Listenelement folgende Element aufrufen.
Java:
private void insertLastRek(Box b, Listenelement e) {
    if (istLetztesElement(e)) {
        Listenelement neuesElement = new Listenelement(b);
        insert(e, neuesElement); // oder wie auch immer Deine insert-Methode aussehen mag
    } else {
        insertLastRek(b, nächstesElement(e));
    }
}
Die Pseudo-Methoden durch "echten" Code zu ersetzen, wirst Du alleine schaffen.
 

Neue Themen


Zurück
Oben