public class TestParam02 {
TestParam02() {
LinkedList1618<String> test = new LinkedList1618<String> ();
}
class LinkedList1618<ET> {
private Entry header = new Entry(null, null, null); /**/
private int size = 0;
public LinkedList1618() {
header.next = header;
header.previous = header;
}
public ET getLast() {
if (size == 0) throw new java.util.NoSuchElementException();
return header.previous.element;
}
public ET removeLast() {
Entry lastEntry = header.previous; /**/
if (lastEntry == header) throw new java.util.NoSuchElementException();
lastEntry.previous.next = lastEntry.next;
lastEntry.next.previous = lastEntry.previous;
size--;
return lastEntry.element;
}
public void addLast(ET e) {
Entry newEntry = new Entry(e, header, header.previous); /**/
header.previous.next = newEntry;
header.previous = newEntry;
size++;
}
public int size() {
return size;
}
private class Entry { /**/
/* Das static muss raus - hier habe ich es entfernt - vorher stand hier ein static */
/* Anmerkung: Damit es möglich ist, eine Klasse als nicht static zu definieren - jetzt von der Praxis her - darf sie nicht innerhalb einer statischen Klasse definiert werden.
Nun muss aber unsere main()-Methode static sein.
public static void main (String [] args) {...}
Diese kann nur statische Klassen aufrufen, wenn sie in derselben Klasse - dem Programm, wie main() definiert sind. Also müssen die anderen Klassen in einer anderen Programmklasse definiert werden, dann müssen sie nicht static sein - natürlich geht das, man schaue String an */
/* Nun kann man in der Datei in der die Hauptprogrammklasse definiert wurde, nicht noch andere Klasse definieren, deswegen muss man sie auf mehrere (*.java)-Dateien verteilen */
private ET element; /**/
private Entry next; /**/
private Entry previous; /**/
private Entry(ET element, Entry next, Entry previous) { /**/
this.element = element;
this.next = next;
this.previous = previous;
}
}
public class ListIterator {
private int nextIndex = 0;
private Entry next = header.next; /**/
boolean hasNext() {
return nextIndex != size;
}
ET next() {
if (nextIndex == size) throw new java.util.NoSuchElementException();
ET elem = next.element;
next = next.next;
nextIndex++;
return elem;
}
}
public ListIterator listIterator() {
return new ListIterator();
}
}
}