import java.util.Iterator; import java.lang.Iterable; public class FIFOListe implements Iterable{ private Node hode; private Node hale; private class Node { Node neste, forrige; T data; public Node(T data){ this.data = data; } } public int storrelseRek(){ return rekLengde(hode); } private int rekLengde(Node node){ if(node == null){ return 0; } return 1 + rekLengde(node.neste); } public void printRekusjonRiktigVei(){ rekusjonRiktigVei(hode); } private void rekusjonRiktigVei(Node node){ if(node == null){ return; } System.out.println(node.data); rekusjonRiktigVei(node.neste); } public void printRekusjonFeilVei(){ rekusjonFeilVei(hode); } private void rekusjonFeilVei(Node node){ if(node == null){ return; } rekusjonFeilVei(node.neste); System.out.println(node.data); } public void leggTil(T t) { Node nyNode = new Node(t); if(hode == null){ hode = nyNode; hale = nyNode; return; } hale.neste = nyNode; nyNode.forrige = hale; hale = nyNode; } public T pop() { if(hode == null){ return null; } T data = hode.data; if(hode.neste == null){ hode = null; hale = null; return data; } hode = hode.neste; hode.forrige = null; return data; } public int storrelse() { Node tmp = hode; int antall = 0; while(tmp != null){ tmp = tmp.neste; antall++; } return antall; } public boolean erTom() { return hode == null; } public void fjernAlt() { hode = null; hale = null; } public void skrivUtListe() { Node tmp = hode; String tekst = ""; while(tmp != null){ tekst += tmp.data + " --> "; tmp = tmp.neste; } System.out.print(tekst); } @Override public Iterator iterator() { return new FIFOIterator(); } private class FIFOIterator implements Iterator { Node denne = hode; boolean first; @Override public boolean hasNext() { return denne != null; } @Override public T next() { T data = denne.data; denne = denne.neste; return data; } } }