Moin Leute,
ich bin grade dabei einige Methoden für eine verkettete Liste zu schreiben, zwei fehlen noch und bei diesen komme ich nicht weiter.
Ich implementiere bei meiner Klasse LinkedList das Interface List.
Die Struktur ist so, das jedes Objet aus zwei Teilen besteht, einmal das Itemfeld
mit dem eigentlichen Inhalt, sowie ein Zeigerfeld
welcher auf dieses verweist. Das erste Zeigerfeld ist null.
Ich kann nun nach belieben Objekte hinzufügen, an bestimmte Positionen schreiben, löschen, hinten anhängen usw, zb. mit:
und erhalte dann mit der toString:
diese Ausgabe. (hatte noch mehr drinne)
Grundsätzlich laufen alle Methode rekursiv ab, von vorne beginnend wird geprüft und ggf. mittels
das ganze erneut für das folgende Element aufgerufen.
Ich soll jetzt zwei Methoden schreiben, die mir jeweils den ersten Index, sowie den letzten Index des übergebenen Elementes ermitteln.
Da die Funktionen rekursiv für jedes Element der Liste laufen, kann ich keine lokalen Variablen anlegen, globale ergeben auch keinen Sinn, da diese dann das Ergebnis bei mehrmaligem Aufruf der Funktion verfälschen würden.
Mittels length() kann ich die Länge der verbleibenden Liste abfragen, diese ändert sich dann natürlich mit jedem Aufruf, da ich jeweils ein Element weitergehe.
Mir ist nicht klar, wie ich dies realisieren soll, hier ein Ansatz der aber nichts vernünftiges liefert.
Vielleicht hat sich ja jemand auf dieses Gebiet spezialisiert und kann mir helfen.
Über Tipps würde ich mich sehr freuen.
LG,
Alex
ich bin grade dabei einige Methoden für eine verkettete Liste zu schreiben, zwei fehlen noch und bei diesen komme ich nicht weiter.
Ich implementiere bei meiner Klasse LinkedList das Interface List.
Die Struktur ist so, das jedes Objet aus zwei Teilen besteht, einmal das Itemfeld
Java:
private Object item;
Java:
private LinkedList next;
Ich kann nun nach belieben Objekte hinzufügen, an bestimmte Positionen schreiben, löschen, hinten anhängen usw, zb. mit:
Java:
LinkedList l1 = new LinkedList();
l1.insert("FF");
l1.insert(4.7);
l1.insert(567);
l1.insert("moin");
und erhalte dann mit der toString:
Java:
--> 4.7 --> loblibuh --> FF --> jo was geht --> 15 --> moin --> 4a --> moin --> 567 --> 4.7 --> FF |--
Grundsätzlich laufen alle Methode rekursiv ab, von vorne beginnend wird geprüft und ggf. mittels
Java:
return next.methode()
Ich soll jetzt zwei Methoden schreiben, die mir jeweils den ersten Index, sowie den letzten Index des übergebenen Elementes ermitteln.
Java:
int firstIndexOf(Object x);
int lastIndexOf(Object x);
Da die Funktionen rekursiv für jedes Element der Liste laufen, kann ich keine lokalen Variablen anlegen, globale ergeben auch keinen Sinn, da diese dann das Ergebnis bei mehrmaligem Aufruf der Funktion verfälschen würden.
Mittels length() kann ich die Länge der verbleibenden Liste abfragen, diese ändert sich dann natürlich mit jedem Aufruf, da ich jeweils ein Element weitergehe.
Mir ist nicht klar, wie ich dies realisieren soll, hier ein Ansatz der aber nichts vernünftiges liefert.
Java:
public int firstIndexOf(Object x){
if (isEmpty()){
return -1;
}
else{
while (!(next.getItem().equals(x))){
return next.firstIndexOf(x);
}
System.out.println(length());
return this.length();
}
}
Über Tipps würde ich mich sehr freuen.
LG,
Alex