import java.util.Iterator; class Tilskuer { private String navn; public Tilskuer(String navn) { this.navn = navn; } @Override public String toString() { return "Tilskuer " + navn; } } class Tilskuerliste implements Iterable { class Node { Tilskuer data; Node neste; Node(Tilskuer data) { this.data = data; } } private Node forste, siste; private int storrelse; public void add(Tilskuer tilskuer) { Node nyNode = new Node(tilskuer); if(forste == null) { forste = siste = nyNode; } else { siste.neste = nyNode; siste = nyNode; } storrelse++; } @Override public Iterator iterator() { return new ForsteTilMidtenIterator(this.forste, this.storrelse); } class ForsteTilMidtenIterator implements Iterator { private Node denne; private int stoppIndeks; private int denneIndeks; ForsteTilMidtenIterator(Node forste, int storrelse) { this.denne = forste; this.stoppIndeks = storrelse / 2; this.denneIndeks = 0; } @Override public boolean hasNext() { return denne != null && denneIndeks <= stoppIndeks; } @Override public Tilskuer next() { // Node current = denne; Tilskuer data = denne.data; denne = denne.neste; denneIndeks++; return data; } } }