// PLAN: //1. Koe skal v?re en generisk enkeltlenket liste av typen k? (FIFO) med peker //til start og slutt //2. Koe skal ha en metode for innsetting og fjerning av elementer //3. Koe skal implementere Iterable slik at vi kan bruke foreach-l?kker import java.util.Iterator; public class Koe implements Iterable{ //pekere til f?rste og siste node Node start; Node slutt; //en indre node-klasse class Node { //enkeltlenket - peker til neste Node neste; T data; public Node(T data){ this.data = data; } } //metode for innsetting - legger til bakerst i en k? public void leggTilBakerst(T data) { Node nyNode = new Node(data); //m? opprette en node og legge data inn i den //er listen tom? if (start == null){ start = slutt = nyNode; } else{ slutt.neste = nyNode; slutt = nyNode; } //vi legger til ny node som den siste noden sin neste (alts? slutt.neste) //og oppdaterer slutt-pekeren til ? peke til den nye siste noden (alts? nyNode) } //metode for ? fjerne public T taUt(){ T ut = start.data; //mellomlagrer dataen til noden som skal fjernes for ? ikke miste den //sjekke om listen er tom if (start == null) { System.out.println("Listen er tom"); return null; } //sjekke om listen har ett element //setter start og slutt til null og returnerer dataen til noden som fjernes if (start == slutt) { start = slutt = null; return ut; } //setter start til ? peke til den nye f?rste noden, alts? start.neste //returnerer dataen vi har mellomlagret, alts? dataen til noden som start pekte til f?r vi endret til start.neste. start = start.neste; return ut; } void skrivUtKoe(){ Node temp = start; String ut = ""; while (temp != null) { ut += temp.data + " "; temp = temp.neste; } System.out.println(ut); } @Override public Iterator iterator() { return new KoeIterator(); } class KoeIterator implements Iterator { Node denne = start; //sjekker om det er et til element ? iterere over @Override public boolean hasNext() { return denne != null; } //returnerer neste element som itereres over (alts? denne sin data) @Override public T next() { T data = denne.data; denne = denne.neste; return data; } } }