titolo curioso no?
beh, il mio problema č proprio questo
io ho creato una struttura dati (coda circolare) per rappresentare i dati di un grafico
ma il mio problema viene prima del grafico

ho creato una classe di prova per testare la mia struttura e ho scoperto che se nel ciclo di inserimento dei dati nella coda accedo ad essa (usando l'iteratore)
alla fine del ciclo i metodi che invoco non danno i risultati corretti
neanche quelli interni al ciclo
posto le classi
aiutatemi, non riesco ad uscirne

file CodaCircolare.java
codice della struttura dati (funziona)
codice:
public class CodaCircolare{
    class Nodo{
        Object info;
        Nodo next;
        Nodo(Object a, Nodo n) {info=a; next=n;}
        Nodo(Object a) {info=a; next=null;}
    }

    protected Nodo first,last;
    protected int dimensionemax;

    CodaCircolare(int k){
        first=last=null;
        dimensionemax=k+1;
    }

    public int count(){
        int result;
        if(first==null) result=0; else {
			result=1;
        	Nodo temp = first;
        	while (temp != last) {
        	    result++;
        	    temp=temp.next;
        	}
		}
        return result;
    }

    public Object front() throws EmptyQueueException{
        if (isEmpty()) {
            throw new EmptyQueueException("impossibile fornire primo elemento");
        } else {
            return first.info;
        }
    }

    public boolean isEmpty(){
        return first == null;
    }

    public boolean isFull(){
        return count() >= dimensionemax;
    }

    public void remove() throws EmptyQueueException{
        if (isEmpty()) {
            throw new EmptyQueueException("impossibile rimuovere dalla coda");
        } else {
			first=first.next;
        }
    }

    public void add(Object a){
		if (isEmpty()) {
			first=new Nodo(a);
			last=first;
        } else {
        	last.next=new Nodo(a);
            last=last.next;
            if (isFull()) first=first.next;
        }
    }

    IteratoreCodaCircolare iterator() { return new IteratoreCodaCircolare(this); }

}

class EmptyQueueException extends Exception{
	EmptyQueueException(String s){
		super(s);
	}
}
l'iteratore
file IteratoreCodaCircolare.java
codice:
import java.util.Enumeration;

class IteratoreCodaCircolare implements Enumeration {

	CodaCircolare c;

	IteratoreCodaCircolare(CodaCircolare l) {
		c=l;
	}

	public boolean hasMoreElements() { return !c.isEmpty(); }

	public Object nextElement() {
		Object result = null;
		try {
			result = c.front();
			c.remove();
		} catch(EmptyQueueException ee) {}
		return result;
	}
}
classe di prova
file: ProvaCodaCircolare.java
codice:
import java.util.Enumeration;

class ProvaCodaCircolare {
	public static void main(String[] args) {
		Enumeration it;
		CodaCircolare c = new CodaCircolare(6);
		for (int i=0; i<20;i++) {
			c.add(new Integer(i));

//			System.out.println("count: "+c.count());

//			it = c.iterator();
//			while(it.hasMoreElements()) System.out.print(it.nextElement()+" ");
//			System.out.print("\n");
		}
		System.out.print("\n-------------\n");
		System.out.println("count: "+c.count());
		it = c.iterator();
		while(it.hasMoreElements()) System.out.print(it.nextElement()+" ");
	}
}
provate voi stessi
lasciando i commenti tutto funziona bene
se li togliete non funziona come dovrebbe

grazie