|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 290
|
[C] problema con lista
Ciao a tutti!
avrei un problema con una funzione funzione che agisce su una lista.. la cosa stranissima è che se faccio il debug (uso dev-c++) non ho nessun problema ed il programma funziona benissimo..vedo prima di tutto di spiegarmi su come è creata la lista. La testa della lista è vuota, ed ogni elemento è fatto in questo modo: Codice:
typedef struct elem_t{
BASE val;
struct elem_t* next;
} elem;
I vari elementi della lista sono caricati da un file di testo.. ed ho voluto creare una funzione che mi elimini le eventuali voci duplicate. Codice:
int del_dup(elem* P_list){
int i = 0; /* # voci eliminate */
int flag = 0,n;
elem *p, *q, *s;
s = P_list->next;
while(s != NULL){
p = s;
q = s->next;
while(q != NULL){
for(n=0; n<N_COMPARE && (BASE_cmp(s->val,q->val,n)==0); n++);
if (n == N_COMPARE){
p->next = q->next;
free(&(q->val));
free(q);
i++;
q = p->next;
}else{
p = q;
q = q->next;
}
}
s = s->next;
}
return(i);
}
La funzione BASE_cmp è sempre mia e confronta, in base al valore di n passato, un campo diverso della strutture BASE, e con il for dove l'ho inserita controllo ogni campo del mi elemento, per essere sicuro che siano uguali in tutto (e non solo simili..). Per testare la funzione faccio caricare nella lista 8 volte lo stesso elemento(in pratica c'è solo quello).. E come ho detto prima se eseguo il tutto in modalità debug funziona perfettamente, mentre in modalità normale crasha! secondo me questo ha dell'incredibile.. ho notato che se nella lista ci sono al massimo 5 voci uguali funziona perfettamente anche in modalità normale.. Ok, in realtà non accadrà mai di avere più di 5 voci consecutive identiche.. però non è giusto che si comporti in quel modo, oltretutto ho già riguardato un sacco di volte il codice ed a me sembra (a logica) tutto corretto.. A questo punto mi affido a voi Grazie 1000 in anticipo! Vender
__________________
_______________________________________________ AMD Athlon64 3500+, Cooler Master Hyper 6, Asus A8V Deluxe wifi-g Rev2.0, Corsair TwinX-1024 Pc3200XL Platinum, Western Digital Raptor 74GB, Cooler Master CoolDrive 4, Sapphire Radeon 9600XT 256MB, Sound Blaster Audigy Player, Cambridge Soundworks 4.0, Enermax Coolergiant EG485p/ax, Lg Flatron L1952S --- Acer Aspire 5024 ![]() Apple MacBook Pro 13" 2.53GHz |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 290
|
nessuno sa darmi una mano????
io proprio non so cosa c'è che non va help please
__________________
_______________________________________________ AMD Athlon64 3500+, Cooler Master Hyper 6, Asus A8V Deluxe wifi-g Rev2.0, Corsair TwinX-1024 Pc3200XL Platinum, Western Digital Raptor 74GB, Cooler Master CoolDrive 4, Sapphire Radeon 9600XT 256MB, Sound Blaster Audigy Player, Cambridge Soundworks 4.0, Enermax Coolergiant EG485p/ax, Lg Flatron L1952S --- Acer Aspire 5024 ![]() Apple MacBook Pro 13" 2.53GHz |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:10.



















