Tutto qua? chiedendo ad alcuni colleghi sono arrivato a scrivere questa bozza di codice:
class Array{
public:
int n, dim, *vett, head, tail;
Array(int di);
void Add(int x);
void Del();
};
Array :: Array(int di){
n=0;
dim=di;
vett=new int[dim];
head=-1;
tail=0;
}
void Array :: Add(int x){
if(n==dim){
cout<<"array pieno"<<endl; return;}
else{
vett[tail]=x;
if(head==-1)
head=tail;
tail=(tail+1)%dim;
n++;
}
}
void Array :: Del(){
if(n==0){
cout<<"array vuoto"<<endl; return;}
else{
head=(head+1)%dim;
// tail=(tail-1)%dim;
n--;
}
}
quello che però non mi convince è che se io dovessi eliminare un elemento che non è ne la testa ne la coda del vettore circolare, come mi gestisco con gli indici? Dovrei shiftare tutto a sinistra(o a destra) di una posizione?