• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Richiesta Gestione elenco circolare

dellodj

Nuovo utente
Autore del topic
3 Luglio 2011
23
9
Miglior risposta
0
Ho scritto questo codice:
#include <iostream>
#define MAXDIM 5
using namespace std;
void enqueue(int v[],int &dim, int &tail) {

if(dim==MAXDIM) {
cout<<"coda piena";
} else {
cin>>v[tail];
dim++;
tail++;
if(tail==MAXDIM) {
tail=0;
}
}
}
void dequeue(int v[],int &dim, int &head) {

if(dim ==0) {
cout<<"coda vuota";
} else {
cout<<"valore tolto "<<v[head];
dim--;
head++;
if(head==MAXDIM) {
head=0;
}
}
}

int main() {
int scelta;
int v[MAXDIM];
int head=0;
int tail=0;
int dim=0;
do {
cout<<"1.Accoda nuovo valore\n";
cout<<"2.Viualizza\n";
cout<<"3.Togli valore\n";
cout<<"Scelta:";
cin>>scelta;
switch(scelta) {
case 1:
enqueue(v,dim,tail);
break;
case 2:
visVettore(v,head, tail);
break;
case 3:
dequeue(v,dim,head);
break;
}

} while(scelta!=0);
}
Mi manca la visualizzazione del vettore, partendo da head e arrivando a tail, ci ho provato ma proprio non ci riesco, potreste darmi una versione funzionante, o un qualche consiglio per crearla?
 
No, stiamo parlando di un buffer circolare quindi la for semplice non ha senso.

Prova con

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

chiamandola con

visVettore(v, dim, head);
 
No, stiamo parlando di un buffer circolare quindi la for semplice non ha senso.

Prova con

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

chiamandola con

visVettore(v, dim, head);
Mi ero perso il fatto che fosse circolare... comunque con for o con while l'implementazione è del tutto equivalente. Quindi il codice che ho messo sopra è semplicemente
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Si certo, non intendevo che con il for non si può mentre con il while sì. Dicevo che quel tuo for non teneva conto del fatto che si parlava di un buffer circolare.
Allora ho proposto del codice "elementare" e fruibile dal punto di vista didattico in modo che chi inizia a programmare potesse comprenderlo facilmente.