salve, ho scritto questo programmino per simulare le operazioni su stack, sembra funzioni, ma non capisco come mai, mi visualizza un array "sporco"... nonostante la calloc iniziale che me lo restituisce "vuoto"... sarà sicuramente una sciocchezza... ma non riesco ad individuarla![]()
posto di seguito il listato:
Grazie in anticipocodice:#include<stdio.h> #include<stdlib.h> #define MAX 10 /* Simulare in C la gestione di una pila (stack) tramite array statico (può essere anche un array di struct) creando le funzioni di manipolazione push() [inserimento] e pop() [eliminazione]. Il programma deve prevedere un menù che consenta di scegliere l’operazione da eseguire.*/ void push(char*,char,int*); void pop(char*,int*); void visualizza(char*); int main () { short x=0; char *stack; int elem,head=-1; stack=(char*)calloc(MAX+1,sizeof(char)); printf("Menu:\n\n1) effettuare operazione di push [inserimento]"); printf("\n2) effettuare operazione di pop [estrazione]"); printf("\n3) uscire dal programma"); while(x!=3) { printf("\n\noperazione: "); fflush(stdin); scanf("%d",&x); if(x==1) { fflush(stdin); printf("inserire dato: "); scanf("%c",&elem); push(stack,elem,&head); visualizza(stack); } else if(x==2) { pop(stack,&head); visualizza(stack); } else if (x==3) {printf("uscita!"); exit(1);} } return 0; } void push(char *a, char elem, int *head) { if(*head == MAX - 1) { printf("Non e' possibile inserire altri dati stack pieno"); exit(1); } else { *(a + ++ *head) = elem; printf("\nElemento inserito\n"); } } void pop(char *a, int *head) { if(*head == -1) { printf("\nNon e' possibile eliminare stack vuoto"); exit(1); } else { *(a +*head) = ' '; (*head)--; printf("\nElemento eliminato\n"); }fflush(stdin); } void visualizza(char *a) { short i; for(i=0; i<MAX; i++) printf("a[%d] %c\n",i,a[i]); }![]()

Rispondi quotando