Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Gestione pila in C

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    25

    Gestione pila in C

    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]);
    }
    Ultima modifica di MItaly; 24-11-2015 a 22:32 Motivo: Aggiunti tag CODE, fix indentazione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.