import java.awt.event.*; public class WeihnachtsbaumNode { Weihnachtsbaum weihnachtsbaum; // Die "Daten"-Variable WeihnachtsbaumNode next; // Nachfolger WeihnachtsbaumNode prev; // Vorgänger final WindowAdapter aktion_entfernen = new WindowAdapter(){ // Methode "windowClosed" überschreiben public void windowClosed(WindowEvent e){ ///////////////// Test der find()-Funktion aus Aufgabe 1 \\\\\\\\\\\\\\\\\\\\\\\ System.out.println(find(weihnachtsbaum) + " wurde angeklickt."); ///////////////// Ende Test \\\\\\\\\\\\\\\\\ // Beim Schließen des Fensters remove() aufrufen. remove(); } }; // Zählt Anzahl der gültigen Elemente public int count(){ int anzahl = 0; // An den Anfang der Liste gehen WeihnachtsbaumNode current = this; while(current.prev != null){ current = current.prev; } // Jetzt bis zum Ende zählen, aber nur gültige Daten do { if(current.weihnachtsbaum != null) anzahl++; current = current.next; } while(current != null); return anzahl; } public WeihnachtsbaumNode(){ // Konstruktor // Neuen Weihnachtsbaum erzeugen weihnachtsbaum = new Weihnachtsbaum(); weihnachtsbaum.addWindowListener(aktion_entfernen); next = null; // Noch kein Nachfolger prev = null; // Noch kein Vorgänger } public void add(WeihnachtsbaumNode w){ // Hinter aktuelles Element einfügen if(next != null) next.prev = w; w.next = next; w.prev = this; next = w; } // Aktuelles Element aus der Liste rauswerfen public void remove(){ if(prev != null) prev.next = next; if(next != null) next.prev = prev; weihnachtsbaum = null; // Auch den Datenfeld.Zeiger leeren } // Neues Element an Liste anhängen public void append(WeihnachtsbaumNode w){ WeihnachtsbaumNode current = this; while(current.next != null){ current = current.next; } current.add(w); } ////////////////// Hier beginnt Aufgabe 1 \\\\\\\\\\\\\\\\\\\\\\ public WeihnachtsbaumNode find(Weihnachtsbaum w){ // erst in der einen Richtung... WeihnachtsbaumNode aktuell = this; while(aktuell != null) { if(aktuell.weihnachtsbaum == w) return aktuell; aktuell = aktuell.next; } // dann in der anderen Richtung. aktuell = this.prev; while(aktuell != null) { if(aktuell.weihnachtsbaum == w) return aktuell; aktuell = aktuell.prev; } // Wenn wir hier ankommen, wurde nichts gefunden return null; } //////////////////// Hier endet Aufgabe 1 \\\\\\\\\\\\\\\\\\\\\\ } // <- Nicht löschen, Ende der Klassendefinition