Salve ragazzi, sn con un nuovo quesito da porvi.

Sto perdendo un casino di tempo.

Ho da realizzare una lista circolare in java. La sua interfaccia è definita come segue

codice:
public interface CircList<T> extends Iterable<T>{
   public void addCircList(T e);
   public void delCircList();
   public T value();
   public boolean isEmpty();
   public void ruotaAvanti();
   public int numItem();
}
il problema è nell'implementazione della classe che implementa l'interfaccia e credo che lo faccio nel metodo addCircList...

mi potete dire dove sbaglio???

questa è l'implementazione della classe

codice:
public class ListaCircoCollegata<T> implements CircList<T>{
    
	int n =0;
	
	Record<T> listHead = null;
	Record<T> fine = null;
	@Override
	public void addCircList(T e) {
		// TODO Auto-generated method stub
		if(isEmpty()){
			//System.out.println("Entro");
			listHead = new Record<T>(e);
			fine = listHead;
			n++;
		}
		else
		{
		
			fine.next = new Record<T> (e,fine);
			fine = fine.next;
			n++;
		}
	}

	@Override
	public void delCircList() {
		// TODO Auto-generated method stub
		if(isEmpty())
			throw new EccezionestrutturaVuota("Struttura Vuota");
		listHead = listHead.next;
		n--;
	}

	@Override
	public boolean isEmpty() {
		// TODO Auto-generated method stub
		return listHead == null;
	}

	@Override
	public int numItem() {
		// TODO Auto-generated method stub
		return n;
	}

	@Override
	public void ruotaAvanti() {
		// TODO Auto-generated method stub
		listHead = listHead.next;
	}

	@Override
	public T value() {
		// TODO Auto-generated method stub
		if(isEmpty())
			throw new EccezionestrutturaVuota("Struttura Vuota");
		return (T)listHead.elem;
	}
	
	public Iterator<T> iterator(){
		return new ListaCircIterator<T>(listHead,fine);
	}
   
	public static void main(String[] args)
	{
		ListaCircoCollegata<String> listaCircolare = new ListaCircoCollegata<String>();
		listaCircolare.addCircList("alfa");
		listaCircolare.addCircList("beta");
		listaCircolare.addCircList("gamma");
		listaCircolare.addCircList("delta");
		listaCircolare.addCircList("epsilon");
		listaCircolare.addCircList("zeta");
		listaCircolare.addCircList("eta");
		listaCircolare.addCircList("theta");
		
		System.out.println("Stampo gli elementi inseriti");
		Iterator it = listaCircolare.iterator();
		
		while(!it.hasNext())
		{
			System.out.println("Stringa: " + it.next());
		}
		
		listaCircolare.ruotaAvanti();
		listaCircolare.ruotaAvanti();
		listaCircolare.delCircList();
		System.out.println("Stampo gli elementi dopo aver eseguito le varie operazioni");
		Iterator it2 = listaCircolare.iterator();
		while(!it2.hasNext())
		{
			System.out.println("Stringa: " + it.next());
		}
		

	}
}