Salve a tutti,
Sono uno studente di informatica alle prese col corso di Algoritmi e Strutture Dati. Stiamo implementando in previsione dell'esame una serie di strutture dati ma dopo aver proceduto più o meno tranquillamente finora mi sono scontrato con questa benedetta ArraySequence.

Questa è l'interfaccia che andrebbe implementata:
codice:
package interfacce;

import eccezioni.BoundaryViolationException;
import eccezioni.EmptySequenceException;
import eccezioni.InvalidPositionException;

/**
 * 

Title: Sequence.java</p>
 *
 * 

Description: interfaccia di Sequence.
 * 					Il TDA Sequence e` un TDA per la rappresentazione di un insieme ordinato.
 * 					Fornisce le funzionalita` dei TDA Node list e Array list. E` possibile fare 
 * 					riferimento ad un elemento sia attraverso il suo indice che attraverso la sua
 * 					posizione.</p>
 *
 *
 * @author Vito Cuozzo (556/000181)
 * @version 1.0
 */

public interface Sequence<E> extends PositionList<E>, IndexList<E>{
   
	public E getFirst() throws EmptySequenceException; //stessa funzionalità di first() (PositionList) ma il valore di ritorno è un elemento e non una posizione 
	public E getLast() throws EmptySequenceException; //stessa funzionalità di last() (PositionList) ma il valore di ritorno è un elemento e non una posizione
	
	public void insertFirst(E elem); //stessa funzionalità di addFirst() (PositionList) ma non ha valore di ritorno
	public void insertLast(E elem); ////stessa funzionalità di addLast() (PositionList) ma non ha valore di ritorno
	
	public E removeFirst() throws EmptySequenceException; //rimuove il primo elemento della sequenza
	public E removeLast() throws EmptySequenceException; //rimuove l'ultimo elemento della sequenza
	
	//metodi ponte
	public Position<E> atIndex(int index) throws BoundaryViolationException; //restituisce la posizione dell'elemento di indice index
	public int indexOf(Position<E> p) throws InvalidPositionException; //restituisce l'indice dell'elemento in posizione p
	
	//non è necessario definire i metodi d'iterazione per Sequence perché la sua interfaccia estende PositionList
	//e IndexList che possiedono già i suddetti metodi
}
Lo scopo dell'esercizio è utilizzare un array circolare (quindi gestendo testa e coda tramite due indici) che per ogni posizione memorizzi un oggetto Position, il a sua volta contiene l'elemento e il suo indice.

Spero di essere stato sufficientemente chiaro (anche se non penso proprio! ) e spero soprattutto che qualche anima pia riesca a darmi una mano, perché non so davvero da dove iniziare...