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.

Rispondi quotando