package util.nice; import java.util.NoSuchElementException; public class NiceList implements NiceEnumerable, NiceIterateable, Cloneable { protected NiceListLink head = null; NiceListLink getHead() { return head; } public NiceList() { } private void add(NiceListLink aLink) { aLink.setNext(head); head = aLink; } public boolean isEmpty() { return head == null; } public void insert(Niceable info) { add(new NiceListLink(info, null)); } public void remove(Niceable info) throws NoSuchElementException { if (head != null) { NiceListLink prevLink = head; if (prevLink.getInfo() == info) { head = prevLink.getNext(); return; } while (prevLink.getNext() != null) { NiceListLink currLink = prevLink.getNext(); if (currLink.getInfo() == info) { prevLink.setNext(currLink.getNext()); return; } prevLink = currLink; } } throw new NoSuchElementException(); } public NiceEnumeration elements() { return new NiceListEnumeration(this); } public Object clone() { NiceList cloneList = new NiceList(); NiceEnumeration myElements = elements(); if (myElements.hasMoreElements()) { NiceListLink prevLink = new NiceListLink(myElements.nextElement(), null); cloneList.add(prevLink); while (myElements.hasMoreElements()) { prevLink.setNext(new NiceListLink(myElements.nextElement(), null)); prevLink = prevLink.getNext(); } } return cloneList; } public NiceIterator getIterator() { return new NiceListIterator(this); } }