package it.algoritmi.adt; /** L'interfaccia che definisce liste posizionali. */ public interface PositionalList extends Iterable { /** Restituisce il numero di elementi presenti nella lista. */ int size(); /** Restituisce true se e solo se la lista è vuota. */ boolean isEmpty(); /** Restituisce la prima Position della lista (o null se la lista è vuota). */ Position first(); /** Restituisce l'ultima Position della lista (o null se la lista è vuota). */ Position last(); /** Restituisce la Position che precede p (o null, se p è la prima). */ Position before(Position position) throws IllegalArgumentException; /** Restituisce la Position che segue p (o null, se p è l'ultima). */ Position after(Position position) throws IllegalArgumentException; /** Inserisce l'elemento e all'inizio della lista; ne restituisce la posizione. */ Position addFirst(E element); /** Inserisce l'elemento e alla fine della lista; ne restituisce la posizione. */ Position addLast(E element); /** Inserisce l'elemento e prima della Position p; ne restituisce la posizione. */ Position addBefore(Position position, E element) throws IllegalArgumentException; /** Inserisce l'elemento e dopo la Position p; ne restituisce la posizione. */ Position addAfter(Position position, E element) throws IllegalArgumentException; /** Sostituisce l'elemento nella Position p; restituisce l'elemento sostituito. */ E set(Position position, E element) throws IllegalArgumentException; /** Elimina e restituisce l'elemento nella Position p; (poi p non è più valida). */ E remove(Position position) throws IllegalArgumentException; /** Restituisce una rappresentazione iterabile delle posizioni dela lista. */ public Iterable> positions(); }