Ci sono tanti modi per realizzarla, uno è di usare un array di dimensioni fisse:
codice:
typedef struct __queue
{
unsigned long maxLength;
unsigned long length;
int *data;
}queue;
queue* getQueue()
{
queue* q= (queue*)malloc(sizeof(queue));
q->length=0;
q->maxLength=100;
q->data=(int*)malloc(sizeof(int)*q->maxLength);
return q;
}
void enqueue(queue* q, int value)
{
q->data[q->length%100]=value;
q->length++;
}
void deleteQueue(queue** q)
{
free((*q)->data);
free(*q);
*q=NULL;
}
Concettualmente è una coda che quando raggiunge la sua massima grandezza va a sostituire gli elementi che sono stati aggiunti per primi, cronologicamente.
Ora puoi dirmi te se quel codice, che hai preso da qualche parte, implementa una coda circolare o no.