// package net.datastructures; import java.util.Iterator; /** * An interface for positional lists. * @author Roberto Tamassia, Michael Goodrich */ public interface PositionList extends Iterable { /** Returns the number of elements in this list. */ public int size(); /** Returns whether the list is empty. */ public boolean isEmpty(); /** Returns the first node in the list. */ public Position first(); /** Returns the last node in the list. */ public Position last(); /** Returns the node after a given node in the list. */ public Position next(Position p) throws InvalidPositionException, BoundaryViolationException; /** Returns the node before a given node in the list. */ public Position prev(Position p) throws InvalidPositionException, BoundaryViolationException; /** Inserts an element at the front of the list, returning new position. */ public void addFirst(E e); /** Inserts and element at the back of the list, returning new position. */ public void addLast(E e); /** Inserts an element after the given node in the list. */ public void addAfter(Position p, E e) throws InvalidPositionException; /** Inserts an element before the given node in the list. */ public void addBefore(Position p, E e) throws InvalidPositionException; /** Removes a node from the list, returning the element stored there. */ public E remove(Position p) throws InvalidPositionException; /** Replaces the element stored at the given node, returning old element. */ public E set(Position p, E e) throws InvalidPositionException; /** Returns an iterable collection of all the nodes in the list. */ public Iterable> positions(); /** Returns an iterator of all the elements in the list. */ public Iterator iterator(); }