|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2001
Città: Salerno
Messaggi: 649
|
[Java] banale problema con stack...
raga in una struttura dati stack devo implementare un metodo che raddoppi la taglia dell'array, quando questo risulta essere pieno.
Ecco come l'ho implementato: public void doubleSize() { Object V1[] = new Object[V.length*2]; for (int i = 0; i < size(); i++) { V1[i] = V[i]; } V=V1; V1=null; } dove V[] è l'array saturo e V1[] è un array che uso per spostare gli elementi di V[]. Ho l'impressione che non sia una soluzione ottimale, se potete cacciare qualcosa di meglio dal vostro cilindro mi fareste un piacere ![]() thanks
__________________
![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
sei obbligato a usare gli array? raddoppiare ogni volta non è una gran soluzione
il problema è che perdi tempo a copiare ogni volta l'array vecchio in quello nuovo allargato. non vedo molte soluzioni, se non quella di usare un'altra struttura dati |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2001
Città: Salerno
Messaggi: 649
|
si purtroppo posso usare solo l'array, è una limitazione dell'esercizio. Il cacchio di guaio è che il tempo di esecuzione è proporzionale alla dimensione dell'array
![]()
__________________
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2004
Città: Acireale
Messaggi: 447
|
Per fare la copia dell'array puoi utilizzare la funzione System.arraycopy(...),
che e' una funzione nativa di Java. In teoria dovrebbe andare leggermente piu' veloce. Puoi trovare la sintassi completa all'indirizzo Manuale Java Ciao |
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
IMHO la soluzione migliore è proprio quella che hai usato tu, poi non conosco la funzione System.arraycopy, quindi non ti so dire; se il testo dell'esercizio non impone limiti di memoria, puoi creare un array molto grande fin dall'inizio, ad es. da 16 kilobytes, poi scegli tu l'ordine di grandezza.
P.S.: il "V1 = null;" finale non serve. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:49.