Hallo zusammen,
ich habe hier eine Zirkulärliste programmiert, die folgendermaßen aussieht:
Jedes Listenelement hat einen Wert und zwei Zeiger. Einer zeigt auf das nächste element und einer auf den Anfang.
Das letzte Element zeigt auf das Erste.
Also ich hatte es hin und her probiert und mit zwei Elementen hatte es funktioniert, beim dritten wurde dann das zweite element einfach immer überschrieben.
Jetzt habe ich es umprogrammiert und folgende Fälle überlegt:
1.Liste ist leer if (item == null && anfang.item == null)
2.Es ist bereicht ein Element drin und deshalb wird eine neues leeres Listenelement beim next Zeiger erzeugt
next = new ZirkulaereListe();
next.anfang = this. anfang;
next.insertlast(elem);
3.Der letzte vorherige Aufruf sollte dann von folgenden Code gegriffen werden (item == null && anfang.item != null) weil item sollte ja nun null sein, da es ja ein neues Element ist und Anfang ist ja nun auf Anfang gesetzt.
Leider klappt es nicht, seltsamer weise wird das erste if einfach übersprungen, hier der Code:
Über eure Hilfe wäre ich sehr dankbar, weil x+2 Augen, sehe mehr als meine 2 durch die Erkältung geröteten Augen ;-)
ich habe hier eine Zirkulärliste programmiert, die folgendermaßen aussieht:
Jedes Listenelement hat einen Wert und zwei Zeiger. Einer zeigt auf das nächste element und einer auf den Anfang.
Das letzte Element zeigt auf das Erste.
Also ich hatte es hin und her probiert und mit zwei Elementen hatte es funktioniert, beim dritten wurde dann das zweite element einfach immer überschrieben.
Jetzt habe ich es umprogrammiert und folgende Fälle überlegt:
1.Liste ist leer if (item == null && anfang.item == null)
2.Es ist bereicht ein Element drin und deshalb wird eine neues leeres Listenelement beim next Zeiger erzeugt
next = new ZirkulaereListe();
next.anfang = this. anfang;
next.insertlast(elem);
3.Der letzte vorherige Aufruf sollte dann von folgenden Code gegriffen werden (item == null && anfang.item != null) weil item sollte ja nun null sein, da es ja ein neues Element ist und Anfang ist ja nun auf Anfang gesetzt.
Leider klappt es nicht, seltsamer weise wird das erste if einfach übersprungen, hier der Code:
Code:
public class ZirkulaereListe {
private Object item;
private ZirkulaereListe next;
ZirkulaereListe anfang;
public ZirkulaereListe() {}
private ZirkulaereListe(Object i, ZirkulaereListe n) {
item = i;
next = n;
}
public Object insertlast(Object elem) {
if (item == null && anfang == null) {
System.out.println("item == null && anfang == null");
item = elem;
anfang = this;
next = anfang;
}
else
if (item == null && anfang.item != null) {
item = elem;
next = anfang;
System.out.println("item == null && anfang != null");
}
else
System.out.println("else");
next = new ZirkulaereListe();
next.anfang = this. anfang;
next.insertlast(elem);
return elem;
}
//Die beiden Funktionen hier sind nur zum Testen
public void ausgabeAnfang(){System.out.println(anfang.item);}
public void ausgabeNext(){System.out.println(next.item);}
}
Zuletzt bearbeitet: