Hallo ich bearbeite gerade eine Aufgabe zum Thema DoubleLinkedList.
Als erstes werde ich die Aufgabenstellung posten und dann meine ersten Gedankenschritte.
Aufgabe 1
Ergänzen Sie die aus der Vorlesung bekannte Klasse DoubleLinkedList<T>. Gehen Sie bei der
Implementierung der geforderten Methoden aber davon aus, dass Ihnen in dieser Klasse keine Methoden
zur Verfügung stehen und Sie auch nur genau die in der Teilaufgabe geforderte Methode hinzufügen
dürfen. Änderungen und Ergänzungen außerhalb der jeweils geforderten Methode sind bei keiner
Teilaufgabe erlaubt.
a) Vervollständigen Sie die Methode DoubleLinkedList<T> split( T o ).
Die Methode split soll alle Elemente aus der Liste entfernen, die vor dem ersten Element stehen, dessen
Inhalt bei einem Vergleich mit o über die Methode equals den Wert true ergibt. Eine Liste mit den
entfernten Elementen soll als Ergebnis des Aufrufs von split zurückgegeben werden.
Hier sind die Klassen:
Die Methode die ich nun schreiben soll ist hier:
In dieser Ausführung habe ich erst mal die Tatsache das ich keine zusätzlichen Methoden implementieren darf ignoriert und einige Methoden implementiert mit denen ich dann eine DoubleLinkedList Object verändern kann.(Ich weiß nicht ob dieser Versuch funktioniert)
Leider weiß ich nicht wie ich die Methode schreiben soll ohne durch andere Methoden das DoubleLinkedList Objecte zu verändern.
Gruß Luc
Als erstes werde ich die Aufgabenstellung posten und dann meine ersten Gedankenschritte.
Aufgabe 1
Ergänzen Sie die aus der Vorlesung bekannte Klasse DoubleLinkedList<T>. Gehen Sie bei der
Implementierung der geforderten Methoden aber davon aus, dass Ihnen in dieser Klasse keine Methoden
zur Verfügung stehen und Sie auch nur genau die in der Teilaufgabe geforderte Methode hinzufügen
dürfen. Änderungen und Ergänzungen außerhalb der jeweils geforderten Methode sind bei keiner
Teilaufgabe erlaubt.
a) Vervollständigen Sie die Methode DoubleLinkedList<T> split( T o ).
Die Methode split soll alle Elemente aus der Liste entfernen, die vor dem ersten Element stehen, dessen
Inhalt bei einem Vergleich mit o über die Methode equals den Wert true ergibt. Eine Liste mit den
entfernten Elementen soll als Ergebnis des Aufrufs von split zurückgegeben werden.
Hier sind die Klassen:
Java:
public class DoubleLinkedList<T>
{
private Element first, last;
private int size;
protected class Element {
private T content;
private Element previous, next;
public Element( T c ) {
content = c; previous = next = null;
}
public T getContent() { return content; }
public void setContent( T c ) { content = c; }
public Element getPrev() { return previous; }
public void setPrev( Element e ) { previous = e; }
public Element getNext() { return next; }
public void setNext( Element e ) { next = e; }
public boolean isFirst() { return previous == null; }
public boolean isLast() { return next == null; }
}
}
Die Methode die ich nun schreiben soll ist hier:
In dieser Ausführung habe ich erst mal die Tatsache das ich keine zusätzlichen Methoden implementieren darf ignoriert und einige Methoden implementiert mit denen ich dann eine DoubleLinkedList Object verändern kann.(Ich weiß nicht ob dieser Versuch funktioniert)
Java:
public class DoubleLinkedList<T>
{
public void addFirst(T o){
if(first==null){
first=last=new Element(o);
}else{
Element neuEle=new Element(o);
neuEle.setNext(first);
first.setPrev(neuEle);
first=neuEle;
}
size++;
}
public T removeFirst(){
T result = null;
if(first!=null){
result=first.getContent();
first=first.getNext();
if(first!=null){
first.setPrev(null);
}else{
last=null;
}
size--;
}
return result;
}
public DoubleLinkedList<T> split(T o){
DoubleLinkedList neu= new DoubleLinkedList();
Element actual = first;
boolean b = false;
while(actual!=null && !b){
if(actual.getContent().equals(o)){
b=true;
return neu;
}else{
T ob=first.getContent();
neu.addFirst(ob);
removeFirst();
}
}
return neu;
}
}
Leider weiß ich nicht wie ich die Methode schreiben soll ohne durch andere Methoden das DoubleLinkedList Objecte zu verändern.
Gruß Luc