PROBLEMA [C] Problemi con lo Stuck e la funzione di Pop

Pubblicità

Giovanni Mentone

Nuovo Utente
Messaggi
2
Reazioni
0
Punteggio
24
Salve a tutti, sto studiando il linguaggio C e prendendo spunto da i programmi di un professore mi sto esercitando sullo Stack e le funzioni di Push e Pop. Il file Cpp che ho sottomano è questo:



#define MAX 4

int main(){
int stack[MAX+1];
int i,n,stato;
stack[0]=MAX;

for (i=1;i<=stack[0];i++){
printf("Inserisci il %d elemento dello stack (max 4 elementi):\n",i);
scanf("%d",&stack);
}

printf("\nLo stack e\':\n");
for(i=1;i<=stack[0];i++){
printf("%d ",stack);
}
printf("\n");
stato=1;
while(stato==1||stato==2){
printf("Cosa vuoi fare?\n POP(1) - PUSH(2) - STAMPA(3)\n");
scanf("%d",&stato);
switch(stato){
case 1:
if(stack[0]==0){
printf("\nNon ci sono elementi nello stack\n");
}
else{
stack[0]--;
printf("Il top era %d\n",stack[stack[0]+1]);
}
break;

case 2:
if(stack[0]==MAX){
printf("\nLo stack e\' pieno\n");
}
else{
printf("Che valore vuoi mettere al top?\n");
scanf("%d",&n);
stack[stack[0]+1]=n;
stack[0]++;
}
break;
}
}

printf("\nLo stack e\':\n");
for(i=1;i<=stack[0];i++){
printf("%d ",stack);
}
printf("\n");

system("PAUSE");
return 0;

}


Ovviamente mancano le librerie ma non è questo il punto. Come potete vedere in grassetto ho indicato una piccola stringa, la mia domanda è: ma cosa vorrebbe indicare? Cioè mi spiego meglio: come da struttura dovrebbe dire "Se lo stack è vuoto dì all'utente che non si può togliere più nulla" ma perché stack[0]==0 dovrebbe indicare stack vuoto? Lo stack così definito non è altro che un vettore di 5 elementi (0 1 2 3 4) ove il valore dell'elemento 0 è pari a MAX (costante predefinita pari a 4), qualcuno mi può spiegare perchè il confronto positivo tra stack[0] e 0 sta ad indicare che il contenitore è vuoto?
Ringrazio tutti in anticipo! :D
 
Ultima modifica:
a naso mi sembra che stack[0] indichi il numero di elementi presenti sullo stack;
se è così questa implementazione di stack non mi piace proprio, era meglio definisre una struct con una variabile intera contenente il numero di elem. ed una array con lo stack vero e proprio
 
Pubblicità
Pubblicità
Indietro
Top