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; public Node(T v) { verdi = v; } } 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 ny = new Node(t); if (erTom()) { hode = ny; } else { hale.neste = ny; } hale = ny; } public void fjernAlt() { hale = hode = null; } public T pop() { if (erTom()) { return null; } Node returneres = hode; if (hode == hale) { fjernAlt(); } else { hode = hode.neste; } return returneres.verdi; } public void skrivUtListe() { Node tmp = hode; System.out.print("["); while (tmp != null) { if (tmp.neste == null) System.out.print(tmp.verdi); else System.out.print(tmp.verdi + ", "); tmp = tmp.neste; } System.out.println("]"); } @Override public Iterator iterator() { return new FIFOIterator(); } private class FIFOIterator implements Iterator { private Node denne = hode; @Override public boolean hasNext() { return denne != null; } @Override public T next() { if (!hasNext()) throw new NoSuchElementException("next"); Node tmp = denne; denne = tmp.neste; return tmp.verdi; } } public static void main(String[] args) { FIFOListe liste = new FIFOListe<>(); liste.leggTil("Hei"); liste.leggTil(" paa"); liste.leggTil(" deg"); liste.leggTil("!"); liste.skrivUtListe(); for (String s : liste) { System.out.println(s); } System.out.println("\nTest pop"); System.out.println(liste.pop()); System.out.println(liste.pop()); System.out.println(liste.pop()); System.out.println(liste.pop()); } }