Oppure

Loading
28/10/06 16:19
aduri
L'argomento ridimensionamento code non mi e' chiaro.

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 cosa facciano.

aaa