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
La funzione "inserisci_in_lista_ordinata" restituisce 1 se l'inserimento può avere luogo, 0 altrimenti.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); }
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!!!

Rispondi quotando