groove ha scritto:
in quanto sto avendo problema a scrivere il codice in se anhe se ho capito
Prima del codice, dovresti avere ben chiaro come gestire l'array. In particolare riguardo il fatto di gestire gli indici sull'array in maniera "circolare".
Vediamo con qualche schemino con un array di 4 elementi.
Nota, devi tenere 3 informazioni (oltre all'array, ovviamente):
- l'indice di "testa" (indicato con T), che indica l'indice a cui c'è il
prossimo elemento che puoi
estrarre.
- l'indice di "coda" (indicato con C), che indica l'indice in cui puoi
inserire il prossimo elemento.
- una "dimensione", che indica quanti elementi "logici" ci sono.
Scenario iniziale, coda vuota:
0 3
+----+----+----+----+
| | | | |
+----+----+----+----+
^
|
TC
dimensione è 0, quindi non puoi estrarre nulla.
Inserisci un valore es. 10 e diventa:
0 3
+----+----+----+----+
| 10 | | | |
+----+----+----+----+
^ ^
| |
T C
Potresti estrarre 10 dall'indice testa e puoi inserire altro all'indice coda.
Inserisci es. 11 e 12 e diventa:
0 3
+----+----+----+----+
| 10 | 11 | 12 | |
+----+----+----+----+
^ ^
| |
T C
Poi attenzione, aggiungi ancora es. 13 e diventa:
0 3
+----+----+----+----+
| 10 | 11 | 12 | 13 |
+----+----+----+----+
^
|
TC
la coda è passata dall'indice 3 all'indice 0, ha "fatto il giro".
Comunque dimensione è 4 (la lunghezza fisica dell'array) quindi ora non puoi inserire nulla.
Poi decidi di estrarre il 10 e diventa:
0 3
+----+----+----+----+
| | 11 | 12 | 13 |
+----+----+----+----+
^ ^
| |
C T
dimensione è 3, quindi puoi inserire un elemento in coda.
Ecc....