package util.list; import java.util.Enumeration; import java.util.NoSuchElementException; import java.io.Serializable; public class List implements Cloneable, Serializable, Iterateable { protected ListLink head = null; ListLink getHead() { return head; } public List() { } private void add(ListLink aLink) { aLink.setNext(head); head = aLink; } public boolean isEmpty() { return head == null; } public void insert(Object info) { add(new ListLink(info, null)); } public void remove(Object info) throws NoSuchElementException { if (head != null) { ListLink prevLink = head; if (prevLink.getInfo() == info) { head = prevLink.getNext(); return; } while (prevLink.getNext() != null) { ListLink currLink = prevLink.getNext(); if (currLink.getInfo() == info) { prevLink.setNext(currLink.getNext()); return; } prevLink = currLink; } } throw new NoSuchElementException(); } public ListEnumeration elements() { return new ListEnumeration(this); } public Object clone() { List cloneList = new List(); ListEnumeration myElements = elements(); if (myElements.hasMoreElements()) { ListLink prevLink = new ListLink(myElements.nextElement(), null); cloneList.add(prevLink); while (myElements.hasMoreElements()) { prevLink.setNext(new ListLink(myElements.nextElement(), null)); prevLink = prevLink.getNext(); } } return cloneList; } public Iterator getIterator() { return new ListIterator(this); } }