import java.util.Iterator; class Tog implements Iterable { public togNode first, last; public String navn; public class togNode { T data; togNode next; public togNode(T data) { this.data = data; } @Override public String toString(){ return "\nTog: " + navn + "\nvogn nr: " + data; } } public void add(T data) { togNode node = new togNode(data); if (first == null) { //hvis listen er tom, er foereste node den foerst og sist samtidig first = node; last = node; } else { //siste node faar en nesteNode, ogsaa blir nesteNoden siste node last.next = node; last = node; } } public T remove() { togNode temp = first; //midlertidig peker paa foerste node if (first == null){ //hvis listen er en tom liste kaster den en ugyldiglisteindeks feil fordi det kan ikke fjernes noe fra en tom liste System.out.println("Tom liste"); } if (first == last) { first = null; last = null; return temp.data; } first = first.next; //node nr2 i listen blir foerste node return temp.data; } public class TogIterator implements Iterator { public togNode current; public TogIterator() { current = first; } @Override public boolean hasNext() { return current != null; } @Override public T next() { if (!hasNext()) { System.out.println("node har ikke neste");; } T temp = current.data; current = current.next; return temp; } } @Override public Iterator iterator() { return new TogIterator(); } @Override public String toString(){ return "Tognavn: " + navn; } public int size() { togNode node = first; int teller = 0; while(node != null){ teller++; node = node.next; } return teller; } public static void main(String[] args) { Tog tog = new Tog(); tog.add(new vogn(123)); tog.add(new vogn(567)); tog.add(new vogn(890)); for(vogn vogn : tog){ System.out.println(vogn); } } }