Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    24

    [C] dichiarazione e richiamo di una funzione per inserire un valore in una lista

    salve ragazzi,
    ho un problema nel passaggio di valori ad una funzione, ho da poco iniziato a studiare il c e ancora faccio una gran confusione tra puntatori, indirizzi e passaggi di valore alle funzioni.
    Il compito del programma è quello di inserire, mediante una funzione, un valore all'interno di un lista ordinata contenente valori distinti

    codice:
    /*INCLUSIONE DELLE LIBRERIE*/
    ...
    
    /*DEFINIZIONE DELLA LISTA*/
    typedef struct elem_lista
    {
       int valore;
       struct elem_lista *succ_p;
    }elem_lista_t;
    
    /*DICHIARAZIONE DELLA FUNZIONE*/
    int inserisci_in_lista_ordinata(?)
    
    int main(void)
    {
       /*DICHIARAZIONE VARIABILI LOCALI*/
       int valore_da_inserire;
       ...
    
       /*DICHIARAZIONE DELLA LISTA*/
       elem_lista_t *p;
    
       /*CREAZIONE LISTA*/
       ...
    
       valore_ritornato = "?";    //RISULTATO RITORNATO DALLA FUNZIONE
       printf("%d\n", valore_ritornato);
       return(0);
    }
    
    /*DEFINIZIONE DELLA FUNZIONE*/
    int inserisci_in_lista_ordinata(elem_lista_t **testa_p, int valore)
    {
       int inserito;
       
       elem_lista_t  *corr_p, *prec_p, *nuovo_p;
    
       for(corr_p = prec_p = *testa_p;
            ((corr_p != NULL) && (corr_p->valore < valore));
            prec_p = corr_p, corr_p = corr_p->succ_p);
    
       if((corr_p != NULL) && (corr_p->valore == valore))
          inserito = 0;
       else
       {
          inserito = 1;
          nuovo_p = (elem_lista_t *)malloc(sizeof(elem_lista_t));
          nuovo_p->valore = valore;
          nuovo_p->succ_p = corr_p;
          if(corr_p == *testa_p)
             *testa_p = nuovo_p;
          else
             prec_p->succ_p = nuovo_p;
       }
       return(inserito);
    }
    La funzione "inserisci_in_lista_ordinata" restituisce 1 se l'inserimento può avere luogo, 0 altrimenti.
    Il mio problema sta nella dichiarazione della funzione e nel richiamo della funzione all'interno del main (dove ci sono i punti interrogativi).
    Qualcuno mi saprebbe spiegare come va dichiarata e richiamata una funzione di questo tipo? Help!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    24
    uh uh, per quanto riguarda il richiamo della funzione all'interno del main dovrei essere riuscito a risolvere da solo,
    però ancora non ce l'ho fatta a capire come si dichiara il prototipo di una funzione che prende come agomento un "puntatore ad un puntatore".
    Se qualcuno potesse aiutarmi glie ne sarei grato, ho cercato ovunque ma non sono riuscito a trovare nulla, ho provato anche un po' per tentativi ma nulla da fare. E' la prima volta che lavoro con una funzione in cui un parametro è un "puntatore ad un puntatore" e non riesco proprio a capire come si dichiara il prototipo.
    Per favore aiutoooooo!!!!

  3. #3
    basta che sia identico a quello della definizione:
    codice:
    /*DICHIARAZIONE DELLA FUNZIONE*/
    int inserisci_in_lista_ordinata(elem_lista_t **testa_p, int valore);
    
    /*DEFINIZIONE DELLA FUNZIONE*/
    int inserisci_in_lista_ordinata(elem_lista_t **testa_p, int valore)
    {
    ...
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    24
    Grazie macapp!

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.