Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - array crcolari e code
Forum - Java - array crcolari e code

Avatar
aduri (Normal User)
Newbie


Messaggi: 11
Iscritto: 03/10/2006

Segnala al moderatore
Postato alle 9:50
Sabato, 28/10/2006
Salve a tutti lo scritto di Java l’ho passato e ringrazio tutti ma per l’orale sto analizzando questo codice ma ho alcuni dubbi su dei metodi.

Codice:
public class ArrayQueue implements Queue {
int first, last, size;
Object[] data;
public ArrayQueue(int n){
size=n;
data = new Object[size];
first=last=-1;
}
public boolean isFull() {
return first==0 && last==size-1 || first==last+1; //caso a e b (chiaro)
}
public boolean isEmpty() {
return first==-1;  // array non inizializzato
}
public Object front() { return data[first];} //metodo che ritorna il primo elemento

public void clear() { last=first=-1;}}

public void enqueue(Object el) {
if (last==size-1 || last==-1){
data[0]=el;
last=0;
if (first ==-1)
first=0;
}
else
data[++last]=el;
}
public Object dequeue() {
Object tmp = data[first];
if (first==last)
last=first=-1;
                 else if (first == size-1)
first=0;
   else
first++;
return tmp;
}



Nel metodo enqueue il primo if dice che se l’ultimo elemento dell’array esiste o l’array non e’ inizializzato si carica l’oggetto el nella prima posizione dell’array last si mette a 0 perche’ last corrisponde a first? Non caapisco poi il secondo if (first==-1) first=0; non dovrebbe anche qua caricare l’oggetto el essendo l’array non inizializzato?
Il metodo dequeue crea un oggetto temporaneo col primo elemento dell’array poi col primo if fa un controllo per vedere se e’ presente un solo elemento se si’ ritorna l’array vuoto last=first=-1 poi controlla se c’e’ un solo elemento nell’ultima posizione e qui non capisco che differenza ci sia rispetto al precedente (non dovrebbe ritornare array vuoto first=last=-1)?

PM Quote
Avatar
aduri (Normal User)
Newbie


Messaggi: 11
Iscritto: 03/10/2006

Segnala al moderatore
Postato alle 18:18
Sabato, 28/10/2006
Se ho capito bene graficamente il primo if verifica che ci sia un solo elemento in una qualsiasi posizione della coda, l’else if verifica che ci sia un solo elemento in fondo alla coda e l’ultimo else sposta l’indice a first +1 per il prossimo dequeue e ritorna il primo oggetto che era salvato nel buffer.


PM Quote