import java.util.Iterator; public class FIFOListe implements Iterable{ private Node start; private Node slutt; private class Node { Node neste; T data; Node(T data){ this.data = data; } } public int storrelse() { int teller = 0; Node p = start; while (p != null){ teller++; p = p.neste; } return teller; } public boolean erTom() { return start == null; } public void leggTil(T d) { Node nyNode = new Node(d); if (erTom()){ start = nyNode; } else { slutt.neste = nyNode; } slutt = nyNode; } public void fjernAlt() { start = null; slutt = null; } public T pop(){ // fjerne element -> første Node returNode = start; start = start.neste; return returNode.data; } public void skrivUtListe() { Node p = start; while(p != null){ System.out.println(p.data); p = p.neste; } } @Override public Iterator iterator() { return new FIFOIterator(); } private class FIFOIterator implements Iterator { Node denne = start; @Override public boolean hasNext() { return denne != null; } @Override public T next() { if (denne == null) throw new NoSuchElementException("next"); Node p = denne; denne = denne.neste; return p.data; } } }