Visualizza messaggio singolo
Vecchio 28-10-2006, 22.37.15   #1
aduri
Newbie
 
Registrato: 23-08-2006
Messaggi: 22
aduri promette bene
(java) problemi ridimensionamento code

L'argomento ridimensionamento code purtroppo non mi e' chiaro.

Codice:
public void enqueue(Object el) { 
if (isFull()) 
doubleQueue(); 
protected void doubleQueue(){ 
Object[] newdata = new Object[2*size]; 
for(int i=first, j=0; j<size; j++, i++,i=i%size){ 
newdata[j] = data[i]; 
} 
first=0; 
last=size-1; 
size=2*size; 
data=newdata; 
} 

public Object dequeue() { 
int elem; 
if (first<=last) 
elem=last-first+1; 
else 
elem=size-first+last+1; 
if (( elem<size/4) && (elem>=s_size/4)) 
halfQueue(elem); 
...... 

protected void halfQueue(int elem){ 
Object[] newdata = new Object[size/2]; 
for(int i=first, j=0; j<elem; j++, 
i++,i=i%size ){ 
newdata[j] = data[i]; 
} 
first=0; 
last=elem-1; 
size=size/2; 
data=newdata; 
}

Se non ho capito male il primo metodo enqueue(Object el) verifica se l'array e' pieno e se si'
ne raddoppia la taglia caricando i dati sul nuovo array.(anche se non capisco i=%size)
Nella seconda parte che descrive i metodi dequeue() e halfqueue(int el) non capisco i controlli di size e s_size cosa facciano.
Ho capito come calcola elem sia nel caso che first sis prima di last che viceversa ma dopo mi perdo
aduri non è collegato   Rispondi citando