Ciao a tutti, non riesco a implementare una classe DIZIONARIO che faccia uso di una lista concatenata
a puntatori espliciti, questa classe deve implementare l'interfaccia iterator. La lista deve contenere
in ordine crescente ogetti PAROLA. Quindi la classe dizionario deve contere i metodi:
public void add(Parola p) // per inserire in ordine le parole
public Iterator iterator()
public boolean hasNext()
public object next()
public void remove()
Io ho pensato di fare cosìì, ma mi da errore nel metodo add e non so neanche se la logica
del programma è giusta!!! Una cosa del genere era al testo d'esame dove mi hanno bocciato
e sono sicuro che ridarà di nuovo una cosa del genere, vi prego HELP!!
import java.util.Iterator;
class Nodo{
Object info;
Nodo next;
}//Nodo
public class Dizionario_Concatenato {
Nodo testa;
public Dizionario_Concatenato(){
testa=null;
}//costruttore
public Iterator iterator() {
return new Iterator();
}//iterator
public void add(Parola p) {
Nodo cor=testa; Nodo prec=null;
Nodo nuovo=new Nodo();
if(testa==null){
nuovo.info=p;
nuovo.next=testa;
testa=nuovo;
return;
}
Iterator iteratore=iterator();
int c=0;
while(iteratore.hasNext()){
Parola corrente=(Parola)iteratore.next();
c=corrente.compareTo(p);
if(c>0){
nuovo.info=p;
nuovo.next=cor;
prec=nuovo;
}
}
}//add
public class Iterator{
private Nodo cor;
private Nodo prec;
public Iterator(){
cor=testa;
prec=null;
}//costruttore
public Object getFirst(){
if(testa==null)
return null;
return testa.info;
}//getFirst
public boolean hasNext() {
if(cor==null)
return testa!=null;
else
return cor!=null;
}//hasNext
public Object next(){
if(testa==null){
cor=testa;
return getFirst();
}
else{
if(cor.next==null)
return null;
prec=cor;
cor=cor.next;
return cor.info;
}
}//next
public void remove() {
if(cor==testa)
testa=cor.next;
prec.next=cor.next;
}//remove
}//ITERATOR
}//DIZIONARIO_CONCATENATO
CIAO E GRAZIE A TUTTI!