Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Gestione di una pila (LIFO)
- */
- #include <stdio.h>
- int main() {
- int v[10],i,ex=0,ins,sc,n; // v => vettore da gestire, i => contatore per il for, ex => indice per il push, ins => indice per il pop, sc => variabile per lo switch, n => numero da inserire
- for (i = 0; i < 10; i++) {
- v[i] = 0;
- }
- while (1) {
- printf("1) Push\n");
- printf("2) Pop\n");
- printf("3) Stampa\n");
- printf("DEFAULT) Esci\n");
- scanf("%d", &sc);
- switch (sc) {
- case 1:
- if(ex > 9){ // Controllo che la pila non sia piena
- printf("Pila piena, push non consentito\n");
- }else{
- printf("Inserisci il numero (!= 0) > ");
- scanf("%d", &n);
- if(n == 0){ // Uso lo zero come valore di riferimento per gli spazi liberi (piΓΉ una questione di chiarezza che altro, se ne potrebbe fare a meno)
- printf("Inserimento non consentito\n");
- }else{
- v[ex] = n;
- ex++;
- }
- }
- break;
- case 2:
- ins = ex-1;
- if(ins < 0){
- printf("Pila vuota, pop non consentito\n");
- }else{
- printf("%d \n", v[ins]);
- v[ins] = 0;
- ex--; // la posizione utile per il push diventa uguale alla posizione da cui abbiamo effettuato il pop
- }
- break;
- case 3:
- // Stampo tutto il vettore
- for (i = 0; i < 10; i++) {
- printf("%d > %d\n",i,v[i]);
- }
- break;
- default:
- return 0;
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement