import java.util.Iterator; import java.util.NoSuchElementException; public class FIFOListe implements Iterable { private Node hode; private Node hale; private class Node { private Node neste; private T verdi; Node(T v) { verdi = v; } } public int storrelse () { Node tmp = hode; int stoerrelse = 0; while (tmp != null) { stoerrelse++; tmp = tmp.neste; } return stoerrelse; } public boolean erTom () { return hode == null; } public void leggTil(T t) { Node ny = new Node(t); if (erTom()) hode = ny; else hale.neste = ny; hale = ny; } public void fjernAlt() { hode = hale = null; } public T pop() { if (erTom()) return null; Node ut = hode; if (hode == hale) fjernAlt(); else hode = hode.neste; return ut.verdi; } public void skrivUtListe () { String string = "[ "; for (T t : this) { string += t.toString() + " "; } System.out.println(string + "]"); } @Override public Iterator iterator() { return new FIFOIterator(); } private class FIFOIterator implements Iterator { Node denne = hode; @Override public boolean hasNext() { return denne != null; } @Override public T next() { if (!hasNext()) throw new NoSuchElementException("next"); Node tmp = denne; denne = denne.neste; return tmp.verdi; } } public static void main(String[] args) { FIFOListe liste = new FIFOListe<>(); liste.leggTil(1); liste.leggTil(2); liste.leggTil(3); liste.leggTil(4); liste.leggTil(5); liste.pop(); liste.pop(); liste.skrivUtListe(); } }