Rekursion und verkette Liste

Wuella

Mitglied
Hi Leute,

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)
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
Code:
private void hinzufuegen_R (Element aktuell, Element neu, int index)
ä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!
 
Zuletzt bearbeitet:

SDE

Mitglied
Wenn du das zweite Element löschen willst, musst du das erste Element auf das dritte zeigen lassen. Wohin das zweite zeigt, ist dann egal, weil es gelöscht ist.

So wie ich das sehe, tust du das aber nicht, weil der entsprechende Befehl nur für index=1 in der Methode entferne ausgeführt wird.

Versuch mal so in etwa:

Java:
private Element entferne_R(Element aktuell, Element temp,  int index) {
temp=aktuell;
                for(int i=1;i<index;i++){
                        
                        aktuell=aktuell.nf;
                }
                temp.nf=aktuell.nf;
		
		return aktuell;
}

Sorry noch ein edit hab jetzt erst gecheckt daß es wohl ne Aufgabe ist und rekursiv sein soll...
Dann noch ein Vorschlag falls ich nichts übersehen habe sollte das gehen:

Java:
private Element entferne_R(Element aktuell, Element temp, int index) {
                        
		if (index == 1) {
                        temp.nf = aktuell.nf;
			temp = aktuell;
			System.out.println("CHECK: "+aktuell.bez);
			aktuell = aktuell.nf;	
		}
		else entferne_R(aktuell.nf, temp, index-1);
		return temp;
}
 
Zuletzt bearbeitet:

Wuella

Mitglied
Hi,

die Sache ist, dass ich das rekursiv lösen möchte.

Bei
Code:
if (index == 1) {
			temp = aktuell;
			System.out.println("CHECK: "+aktuell.bez);
			aktuell = aktuell.nf;	
		}

ist ja quasi "aktuell" der Nachfolger vom ersten Element.
Wenn ich jetzt aktuell = aktuell.nf setze, zeigt ja aktuell nicht mehr auf das zweite Element, sondern auf das dritte, also MÜSSTE das zweite Element weg sein(es gibt keinen Verweis mehr darauf) und da aktuell der nachfolger vom vorgänger(vom ersten element ist), ist das dritte element dann der Nachfolger vom ersten Element.
 

Wuella

Mitglied
Also was auf jeden Fall auch klappt ist folgendes:

Code:
if (index == 2) {
			temp = aktuell.nf;
			System.out.println("CHECK: "+aktuell.bez);
			aktuell.nf = aktuell.nf.nf;	
		}

Deinen Vorschlag probiere ich jetzt auch aus.
Danke dir!

Jemand noch eine Idee zu meiner zweiten Frage?
 

SDE

Mitglied
Jemand noch eine Idee zu meiner zweiten Frage?

Java:
private void hinzufuegen_R ( Element aktuell, Element neu, int index) {	
		if (index == 1) {
                        neu.nf=aktuell.nf;
			aktuell.nf = neu;
		}
		else  {	
			hinzufuegen_R (aktuell.nf, neu, index-1);
		}
	}

Krieg irgendwie die Formatierung hier nicht hin, woher kommen denn diese Einschübe?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
M Variablen Rekursion mit 2 Parameteren Java Basics - Anfänger-Themen 4
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
M Lösungsweg Rekursion Java Basics - Anfänger-Themen 1
C StackOverflow bei Rekursion Java Basics - Anfänger-Themen 7
D Rekursion - Ich raffs nicht Java Basics - Anfänger-Themen 16
N Methoden Rekursion mit Kreisen Java Basics - Anfänger-Themen 7
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
J Rekursion Java Basics - Anfänger-Themen 22
T Rekursion Programmierverständnis Java Basics - Anfänger-Themen 12
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
K Rekursion einer Zahlenfolge (Ab- und Aufzählung) Java Basics - Anfänger-Themen 6
Zeppi Rekursion Java Basics - Anfänger-Themen 15
V Backtracking und Rekursion Java Basics - Anfänger-Themen 15
L REKURSION Java Basics - Anfänger-Themen 13
Kirby.exe Rekursion Java Basics - Anfänger-Themen 7
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
X Rekursion Java Basics - Anfänger-Themen 3
H Rekursion Java Basics - Anfänger-Themen 2
D Erste Schritte Rekursion Java Basics - Anfänger-Themen 13
M Rekursion Tage Ansteckung gesamte Bevölkerung Java Basics - Anfänger-Themen 15
M Java Rekursion Java Basics - Anfänger-Themen 9
G Java Rekursion Java Basics - Anfänger-Themen 5
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
N Rekursion Java Basics - Anfänger-Themen 18
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
X Rekursion Rätsel Java Basics - Anfänger-Themen 4
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
W Rekursion Java Basics - Anfänger-Themen 0
D Konsolenausgabe Zahlenfolge Rekursion Java Basics - Anfänger-Themen 3
J Ping Pong Methode mit Rekursion Java Basics - Anfänger-Themen 1
N Rekursion Java Basics - Anfänger-Themen 1
B Rekursion Basic Java Basics - Anfänger-Themen 15
O Rekursion Mergesort Java Basics - Anfänger-Themen 18
G Rekursion Java Basics - Anfänger-Themen 20
M Rekursion Java Basics - Anfänger-Themen 7
F Hilfe bei Rekursion... Java Basics - Anfänger-Themen 4
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
B Rekursion Wurzel Java Basics - Anfänger-Themen 39
O Rekursion ordentlich aufschreiben Java Basics - Anfänger-Themen 2
B Rekursion verstehen Java Basics - Anfänger-Themen 4
O Rekursion Java Basics - Anfänger-Themen 2
E Rekursion verstehen. Java Basics - Anfänger-Themen 4
E Rekursion Kisten befüllen Java Basics - Anfänger-Themen 10
E Rekursion verstehen Java Basics - Anfänger-Themen 2
O Rekursion, String Java Basics - Anfänger-Themen 8
N Invertierte Rekursion??? Java Basics - Anfänger-Themen 5
M Bitte um Hilfe bei Quellcode (Rekursion) Java Basics - Anfänger-Themen 6
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
L Rekursion im Baum Java Basics - Anfänger-Themen 9
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
L Rekursion Baumknoten Java Basics - Anfänger-Themen 8
L Rekursion größtes Zeichen Java Basics - Anfänger-Themen 8
L Rekursion Modulo Java Basics - Anfänger-Themen 7
I Rekursion Java Basics - Anfänger-Themen 11
H Rekursion Java Basics - Anfänger-Themen 7
N Methoden zur Rekursion (catalansche Zahlen) Java Basics - Anfänger-Themen 4
S Frage zu Rekursion... Java Basics - Anfänger-Themen 15
N Java catalansche Zahlen (Rekursion) Java Basics - Anfänger-Themen 5
S Noch eine Frage zur Rekursion... Java Basics - Anfänger-Themen 11
S Frage zu einer Rekursion Java Basics - Anfänger-Themen 15
F Methoden Abbruchbedingung bei Rekursion Java Basics - Anfänger-Themen 2
Z Rekursion Primzahlen Java Basics - Anfänger-Themen 1
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
M Rekursion Minimums Suche Java Basics - Anfänger-Themen 12
J Rekursion Java Basics - Anfänger-Themen 5
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
N Rekursion Java Basics - Anfänger-Themen 2
B Rekursion - Übung Java Basics - Anfänger-Themen 2
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
P Rekursion Java Basics - Anfänger-Themen 19
G Rekursion Beispiel Java Basics - Anfänger-Themen 3
M Rekursion schreiben Java Basics - Anfänger-Themen 16
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T Array Rekursion Java Basics - Anfänger-Themen 1
B lineare und schlichte Rekursion Java Basics - Anfänger-Themen 1
A Rekursion Java Basics - Anfänger-Themen 2
B Rekursion Java Basics - Anfänger-Themen 3
A Rekursion stoppt an der falschen Stelle Java Basics - Anfänger-Themen 4
A Lineare Rekursion Java Basics - Anfänger-Themen 6
P Hilfe zur Rekursion? Java Basics - Anfänger-Themen 2
B Rekursion Schneeflocke - Kurze Frage zur Methode Java Basics - Anfänger-Themen 11
L Rekursion Java Basics - Anfänger-Themen 4
S Rekursion Rückgabe - Türme von Hanoi Java Basics - Anfänger-Themen 16
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
E Rekursion Java Basics - Anfänger-Themen 10
G rekursion nicht verstanden Java Basics - Anfänger-Themen 5
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
E Methoden String wird in Rekursion nicht überschrieben Java Basics - Anfänger-Themen 2
T 2fach Rekursion. Java Basics - Anfänger-Themen 4
N Rekursion mit if-Anweisung Java Basics - Anfänger-Themen 10
K Methoden Zahlensysteme umwandeln mittels Rekursion Java Basics - Anfänger-Themen 5
H Rekursion Binäre Suche Java Basics - Anfänger-Themen 2
P Methoden Primzahltest mit Rekursion Java Basics - Anfänger-Themen 3
C Rekursion überführen in eine normale methode Java Basics - Anfänger-Themen 1
M Methoden Rekursion nachvollziehen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben