import java.util.*; public class ListChain implements Collection { ChainLink firstElement; ChainLink lastElement; @Override public boolean add(E e) { if (firstElement == null) { firstElement = new ChainLink(e); lastElement = firstElement; } else { ChainLink newElement = new ChainLink(e); lastElement.setNext(newElement); lastElement = newElement; } return true; } @Override public boolean addAll(Collection c) { // TODO Auto-generated method stub return false; } @Override public void clear() { firstElement = null; lastElement = null; } @Override public boolean contains(Object o) { // TODO Auto-generated method stub return false; } @Override public boolean containsAll(Collection c) { // TODO Auto-generated method stub return false; } @Override public boolean isEmpty() { // TODO Auto-generated method stub return false; } @Override public Iterator iterator() { Iterator e = new Iterator() { ChainLink firstE = firstElement; @Override public boolean hasNext() { return firstE.getNext() != null; } @Override public E next() { E v = firstE.getValue(); firstE = firstE.getNext(); return v; } }; return e; } @Override public boolean remove(Object o) { return false; } public boolean remove(int n) { ChainLink prev = firstElement; if (n == 0) { firstElement = prev.getNext(); prev = null; return true; } for (int i = 0; i < n-1; i++) { if (prev.getNext() != null) { prev = prev.getNext(); } else { return false; } } ChainLink toRemove = prev.getNext(); if (toRemove.getNext() == null) return false; prev.setNext(toRemove.getNext()); toRemove = null; return true; } @Override public boolean removeAll(Collection c) { // TODO Auto-generated method stub return false; } @Override public boolean retainAll(Collection c) { // TODO Auto-generated method stub return false; } @Override public int size() { int count = 1; if (firstElement == null) return 0; ChainLink c = firstElement; while (c.getNext() != null) { c = c.getNext(); count++; } return count; } @Override public Object[] toArray() { // TODO Auto-generated method stub return null; } @Override public T[] toArray(T[] a) { // TODO Auto-generated method stub return null; } public E get(int n) { ChainLink e = firstElement; for (int i = 0; i < n; i++) { if (e.getNext() != null) { e = e.getNext(); } } return e.getValue(); } }