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!!!