Salve a tutti, sto sviluppando un programmino in c, la solita rubrica per imparare a lavorare con le liste dinamiche.
Ho un dubbio riguardo la creazione della lista: sotto ho riportato una funzione la cui funzione dovrebbe essere quella di aggiungere un contatto in rubrica e nel caso in cui la lista sia vuota creare l'elemento di testa.
Da premettere che nel main ho dichiarato il puntatore lista (contatto *rub = NULL;) posto a null che poi passo alla funzione sotto. Il problema scaturisce dal fatto che al primo inserimento, come vedete dal codice, rub dovrebbe prendere l'indirizzo del puntatore temp che viene creato, ma ciò non avviene ritrovandomi, a fine esecuzione della funzione, rub che punta ancora a NULL.
A cosa può essere dovuto il problema?
Grazie mille...
void aggiungiContatto(contatto *rub){
contatto *temp, *tpun;
tpun = rub;
temp = (contatto *) malloc(sizeof(contatto));
printf("\nNuovo Contatto:\n");
printf("Nome > ");
scanf("%s", temp->nome);
printf("Cognome > ");
scanf("%s", temp->cognome);
printf("Telefono > ");
scanf("%s", temp->numero);
temp->next = NULL;
if(rub == NULL)
rub = temp; \\teoricamente rub dovrebbe memorizzare l'indirizzo di temp, ma niente
else {
while(tpun->next != NULL)
tpun = tpun->next;
tpun->next = temp;
}
}