import java.util.Iterator; class FIFOListe implements Iterable { private Node start; private Node slutt; private class Node { Node neste; T verdi; Node(T verdi) { this.verdi = verdi; } } public int storrelse() { int teller = 0; for (Node tmp = start; tmp != null; tmp = tmp.neste) { teller++; } return teller; } public boolean erTom() { return start == null; } public void leggTil(T t) { Node nyNode = new Node(t); if (erTom()) { start = nyNode; slutt = nyNode; } else { slutt.neste = nyNode; slutt = nyNode; } } public void fjernAlt() { start = null; slutt = null; } public T pop() { Node tmp = start; start = start.neste; return tmp.verdi; } public void skrivUtListe() { Node tmp = start; System.out.println("["); while (tmp != null) { System.out.println("\t" + tmp.verdi); tmp = tmp.neste; } System.out.println("]"); } public Iterator iterator() { return new FIFOIterator(); } private class FIFOIterator implements Iterator { Node nextInLine = start; @Override public boolean hasNext() { return nextInLine != null; } @Override public T next() { Node tmp = nextInLine; nextInLine = nextInLine.neste; return tmp.verdi; } } }