Dubbio su implementazione coda con array dinamici

di il
1 risposte

Dubbio su implementazione coda con array dinamici

Se implementiamo la gestione di una coda con il seguente codice:
struct Coda {
int front, back;     // indice della testa (posizione piena) e della coda (posizione vuota)
int size;               // capacità della coda
int *queue;          // puntatore agli elementi della coda
};

void crea(Coda& q, int n) { queue = new int[size = n]; q.back = q.front = 0;}
void enque(Coda& q, int e) { q.queue[back] = e; back = (back + 1) % size; }
void deque(Coda& q, int &e) { e = q.queue[front]; front = (front + 1) % size; }
int vuoto(Coda q) { return q.back == q.front; }
int pieno(Coda q) { return q.front == (q.back + 1)%size; }
void distruggi(Coda& q) {delete [] queue;}
Sbaglio oppure è corretto affermare che l'utilizzo del metodo/funzione membro pieno non permetta mai di riempire completamente l'array dinamico con N elementi ma bensì N-1 ?
Se p.e. avessi:

N=4
front=0
back=3 (indice della coda disponibile per l'inserimento)

la coda contiene 3 elementi, quando vado ad invocare pieno ottengo che
q.front == (q.back + 1)%size

0==(3+1)%4 quindi 0==0 è verificata e pertanto la coda risulta piena quindi non riesco ad inserire l'elemento con indice [3].

1 Risposte

  • Re: Dubbio su implementazione coda con array dinamici

    Sbaglio oppure è corretto affermare che l'utilizzo del metodo/funzione membro pieno non permetta mai di riempire completamente l'array dinamico con N elementi ma bensì N-1 ?
    Si è corretto.
Devi accedere o registrarti per scrivere nel forum
1 risposte