salve avrei bisogno di una mano a capire questo codice di gestione di una pila in C.
Ciò che non capisco è come sono messi i puntatori nelle funzioni..tipo "punt_testa" nella funzione inserisci è preceduto da "&", mentre in visualizza no..
insomma mi servirebbe una spiegazione sui riferimenti dei vari puntatori.
codice:#include <stdio.h> #define PROF_PILA 5 void inserisci(int*,int,int*); void estrai(int*,int*,int*); void visualizza(int*,int); void main() { int pila[PROF_PILA]; int ele, scelta=-1, punt_testa=0; do { printf("\n1. Inserisci elemento\n"); printf("2. Estrai elemento\n"); printf("3. Visualizza pila\n"); printf("0. Esci\n"); scanf("%d",&scelta); switch (scelta) { case 1: if(punt_testa>=PROF_PILA) printf("pila piena\n"); else { printf("elemento da inserire = "); scanf("%d",&ele); inserisci(pila,ele,&punt_testa); } break; case 2: if(punt_testa==0) printf("pila vuota\n"); else { estrai(pila,&ele,&punt_testa); printf("elemento estratto: %3d\n",ele); } break; case 3: if(punt_testa==0) printf("pila vuota\n"); else visualizza(pila,punt_testa); break; default: printf("non ci sono altre operazioni definite su una pila\n"); break; } } while(scelta!=0); } void inserisci(int*a,int b,int*c) { a[*c]=b; *c=*c+1; } void estrai(int*a,int*b,int*c) { *c=*c-1; *b=a[*c]; } void visualizza(int*a,int c) { int i=c-1; printf("testa della pila --> "); for(; i>=0; i=i--) printf("%3d",a[i]); }

Rispondi quotando
come codice pensi vada bene o riesci a propormi una versione migliore per la gestione della pila?

