|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2005
Città: Lingua di terra che taglia il Tirreno
Messaggi: 699
|
[C] Funzione inserimento
Devo inserire la struttura:
struct elemento { char cognome[20]; int num_servizi; struct elemento *next; }; in una lista ordinata per cognome; la funzione controlla se è già presente l'elemento: se esiste incrementa la variabile num_servizi, altrimenti lo inserisce nella giusta posizione; ecco la funzione: void in_lista_ordinata(struct elemento **head, struct elemento ** element) { struct elemento *prec, *curr; prec=NULL; curr=*head; while(curr != NULL && strcmp(curr->cognome, *element->cognome) <=0) { if(strcmp(curr->cognome, *element->cognome)=0) (curr->num_servizi)++; else { prec=curr; curr=curr->next; } } if(prec=NULL) { *element->next= *head; *head= *element; } else { prec->next= *element; *element->next= curr; } } Pareri? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
if(strcmp(curr->cognome, *element->cognome)=0) (deve essere ==, ovviamente).
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
dimenticavo: vale anche per
if(prec=NULL)
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2005
Città: Lingua di terra che taglia il Tirreno
Messaggi: 699
|
hai ragione; nello scriverla sul foglio ho scritto giusto; nel copiarla qui ho ciccato 2 = ;
e si sa che questo è un errore da niubbi, confondere l'uguaglianza con l'assegnamento... Grazie del parere ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Fai attenzione ad un'altra cosa: secondo lo standard (ammesso che la memoria non inganni), l'operatore di accesso dereferenziato ha priorita' maggiore rispetto all'operatore di dereferenziazione!
In pratica: *element->next= *head; puo' darti problemi. Per evitarli, scrivi (*element)->next= *head; (ovviamente in tutti i punti del programma) High Flying Sottovento
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Dec 2005
Città: Lingua di terra che taglia il Tirreno
Messaggi: 699
|
Credo che la memoria non ti inganni e un pò di parentesi in più non hanno mai ucciso nessuno
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:26.