questo è il mio codice per la creazione di uno stack( si parla di strtture argomento ancora non trattato all'uni) vi posto il codice e vi avviso che NON FUNZIONA quindi chiunque voglia vederlo e "aggiustarlo"
è gradito
alcuni dettagli il top indica l'ultimo elemento inserito non la prima locazione dove inserire
	
							
						
					è gradito
alcuni dettagli il top indica l'ultimo elemento inserito non la prima locazione dove inserire
PHP Code:
	
	
#include <st***.h>
struct stack
{
    int vet[10];                                  
    int top;
};
void  inizializza(struct stack*);
int pop(struct stack*);
void push(struct stack*, int);
void stampa(struct stack*);
int contr(struct stack*);
int main()
{
    struct stack *stack1=NULL;// Per annullare eventuali worring
    int scelta, elemento, controllo;
    
    inizializza(stack1); //inizializza il top a 0;
    
    do
    {
        printf("1:inserisci elemento\n");
        printf("2:preleva elemento\n");
        printf("3:stampa elemento\n");
        printf("4: esci\n");
        
        scanf("%d",&scelta);
    
        switch(scelta)
        {
            case 1:
                controllo = contr(stack1);
                if(controllo)                // se il top è minore di 10 posso inserire!
                {
                    printf("Inserisci l'elemento: ");
                    scanf("%d", &elemento);
                    push(stack1,elemento);
                }
                else
                    printf("error\n");        //top >=10   non posso inserire :-(
                break;
                        
            case 2:
                if(!controllo)                            //se top è maggiore di 0 posso prelevare !
                {
                    elemento = pop(stack1);
                    printf("%d",elemento);
                }
                else                                // è impossibile prelevare con top =0   !
                    printf("error\n");
                break;
                        
            case 3:
                if(controllo)                     //qui mi basta sapere che ho 1 elemento nel mio stack se è così posso stamparlo
                    stampa(stack1);
                else
                    printf("stack vuoto\n");
                break;
                        
            case 4:
                printf("arrivederci\n");
                break;
                        
            default:
                printf("error");
        }
    } while (scelta != 4);
    
    return 0;
}
void inizializza(struct stack *stack1)
{
    stack1->top=0;      // Metto nella parte della struttura top puntata dalla variabile stack 0 questo per far partire lo stack da 1 situazione pulita
}
int pop(struct stack *stack1)
{                                                    
    int x;
  
    x = stack1->vet[stack1->top]; //inserisci in x il valore ottenuto da vet[top] sintatticamente va                            
                                                                scritto così  
  
    stack1->top--;     //ho prelevato decremento il top!
    
    return x;
}
void push(struct stack *stack1,int x)//devo inserire un valore nuovo
{
    stack1->top++;//faccio spazio aumentando di 1 il top
    stack1->vet[stack1->top] = x;// mi copio il valore nella locazione
}
void stampa(struct stack *stack1)
{
    int i;
    for(i = 0; i < stack1->top; i++)
    {
        printf("%d", stack1->vet[stack1->top]);//stampa alemento indicato dal top
    }
}
int contr(struct stack *stack1)
{
    if(stack1->top >=9)// occorre studiare come si comporta quando viene chiamato nei casi limiti con    
                                   top ==0 e con top =-=9
        return 0;
    else
        return 1;
} 

 creare uno stack
									
									
									creare uno stack
								 
Comment