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]);
}