import java.util.Iterator; import java.util.NoSuchElementException; class FifoListe implements Iterable { private Node hode; private Node hale; private class Node { Node neste; T ting; Node(T ting) { this.ting = ting; } } void skriv_rek_sist() { // implementer den rekursive funksjonen } void skriv_rek_forst() { // implementer den rekursive funksjonen } int antNoder() { // implementer den rekursive funksjonen return 0; } public int storrelse() { int teller = 0; for (Node tmp = hode; tmp != null; tmp = tmp.neste) { teller++; } return teller; } public boolean erTom() { return hode == null; } public void leggTil(T t) { Node nyNode = new Node(t); if (erTom()) { hode = nyNode; } else { hale.neste = nyNode; } hale = nyNode; } public void fjernAlt() { hode = null; hale = null; } public T pop() { Node returnode = hode; hode = hode.neste; return returnode.ting; } public void skrivUtListe() { Node tmp = hode; System.out.println("["); while (tmp != null) { System.out.println("\t" + tmp.ting); tmp = tmp.neste; } System.out.println("]"); } 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 (denne == null) throw new NoSuchElementException("next"); Node tmp = denne; denne = denne.neste; return tmp.ting; } } }