Salve ragazzi,
sto progettando un dato astratto coda. su questo dato coda dovrei applicare un iteratore che permette di scandire la coda dall'inizio alla fine.
il problema è che l'iteratore non finisce mai va in loop infinito.
interfaccia CodaPcodice:public class CodaCollegataT<T> implements CodaP<T> { private Record<T> inizio = null; private Record<T> fine =null; public void enqueue(T e) { if(isEmpty()){ inizio = new Record<T>(e); fine = inizio; } else { fine.next = new Record<T>(e, fine); fine = fine.next; } } public boolean isEmpty() { return inizio == null; } public Iterator<T> iterator() { return new CodaIteratore(inizio); } public static void main(String[] args) { CodaP<String> codap = new CodaCollegataT<String>(); codap.enqueue("Ciccio spugna"); codap.enqueue("MarlonBrandon"); codap.enqueue("Brandon"); codap.enqueue("Marlon"); Iterator it = codap.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }
iteratorecodice:package CodaP; public interface CodaP<T> extends Iterable<T> { public boolean isEmpty(); public void enqueue(T e); }
quello che io ottengo è questo:codice:package CodaP; import java.util.Iterator; public class CodaIteratore<T> implements Iterator<T>{ // CodaCollegataT<T> p; Record<T> inizio; // Record<T> fine; CodaIteratore(/*CodaCollegataT<T>*/Record<T> p) { this.inizio=p; // inizio = fine = null; } @Override public boolean hasNext() { // TODO Auto-generated method stub if(inizio.next==null) return false; return true; } @Override public T next() { // TODO Auto-generated method stub if(hasNext()){ Record<T> temp = inizio; inizio = inizio.next; return (T)temp.elem; } return null; } @Override public void remove() { // TODO Auto-generated method stub } }
Ciccio spugna
MarlonBrandon
Brandon
Marlon
Brandon
Marlon
Brandon
Marlon
praticamente all'iizio va bene poi mi stampa sempre gli ultimi due elementi
come mai?????



Rispondi quotando