import java.util.*; public class IterableList implements Iterable { private Node head; public Iterator iterator() { return new LLIterator(); } private class LLIterator implements Iterator { private Node current = head; public boolean hasNext() { return current != null; } public Integer next() { int item = current.data; current = current.next; return item; } public void remove() {} } private class Node { private int data; private Node next; private Node(int item) { data = item; next = null; } } public IterableList () { head = null; } public void insert(int item) { Node n = new Node(item); n.next = head; head = n; } public void delete(int item) { Node cur = head, back = null; boolean found = false; while (cur != null) { if (cur.data == item) { if (back == null) head = cur.next; else back.next = cur.next; break; //leave the loop } else { back = cur; cur = cur.next; // move to the next node } } } }