// package net.datastructures; import java.util.Iterator; /** * An interface for positional lists. * @author Roberto Tamassia, Michael Goodrich */ //begin#fragment Header public interface PositionList extends Iterable { //end#fragment Header //begin#fragment List /** 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; //end#fragment List //begin#fragment Positions /** Returns an iterable collection of all the nodes in the list. */ public Iterable> positions(); //end#fragment Positions //begin#fragment Iterator /** Returns an iterator of all the elements in the list. */ public Iterator iterator(); //end#fragment Iterator //begin#fragment Tail } //end#fragment Tail