Salve a tutti, ho un grosso problema con questo codice java su una lista circolare. Ho provato in tutti i modi e non riesco ad uscirne. Il testo è questo:

Creare una classe CLList una lista circolare che non possiede il campo cnt e tail ma solo il campo curr e head (il campo cnt conta gli elementi, il curr elemento corrente, head la testa).
Si scrivano i metodi di cui qui sotto viene data la signature:
public void remove()
public int cnt()
public void removePrev()
il primo rimuove l'elemento successivo a quello puntato da curr, il secondo conta gli elementi

della lista, il ed terzo rimuove l'elemento della lista puntato da curr spostando curr un passo indietro.

Ho fatto così:

public class LList{


private Link head;

protected Link curr;




public

int cont(){


int totale=0;


if (curr != null){


head = curr; //puntatore a testa della coda


do {


curr = curr.next();


totale++;


} while(curr.next() != head);


}


return totale;


}



public void remove () {
if (curr.next()== null)
System.out.println("Nessun elemento può essere rimosso");
int it=curr.next().element();
if (tail==curr.next()) {
tail=curr;
System.out.println("Elemento rimosso dalla coda");
cnt--;
}

public void removePrev() {

Link temp = head;

int it = curr.element();

if (curr==tail) {

while (temp.next() != curr)

temp = temp.next();

tail = curr = temp;

cnt--;

}

if (curr == head) {

head = curr.next();

cnt--;
}

while (temp.next() != curr)

temp = temp next;

curr = temp;

curr.setNext(curr.next().next());

cnt--;

System.out.println("elemento rimosso: " );

}


Potete dirmi dove sbaglio? Grazie.