PDA

Visualizza la versione completa : [C] Scorrere e controllare una lista


matteocastorini
15-12-2005, 13:02
ciao a tutti.
ho scritto questa funzione con lo scopo di scorrere una lista di coordinate e di eliminare eventuali elementi uguali e di sostituirli con altri generati in modo pseudo casuale.
le funzioni ncoord_couple_generation e delete_element rispettivamente servono per generare e per eliminare una coppia di coordinate e penso che non abbiano problemi.
ho devi problemi in fase di esecuzione perchè la lista non viene scorsa bene.
grazie per l'interessamento
:ciauz:




int check(LISTCOORD_PTR *sptr, NICONST_PTR consts_ptr){
int c = 0;
LISTCOORD_PTR previousptr, currentptr;
previousptr = *sptr;
while (previousptr != NULL){
currentptr = previousptr->listcoordptr;
while(currentptr != NULL){
if(previousptr->ascissa == currentptr->ascissa && previousptr->ordinata == currentptr->ordinata){
c += 1;
delete_element(sptr, currentptr);
currentptr = ncoord_couple_generation(consts_ptr);
ncoord_insert(sptr, currentptr);}
currentptr = currentptr->listcoordptr;}
previousptr = previousptr->listcoordptr;}
if (c != 0)
return 1;
else
return 0;
}


struct listcoord
{
double ascissa;
double ordinata;
struct listcoord* listcoordptr;
}listcoord;

typedef struct listcoord LISTCOORD;
typedef LISTCOORD *LISTCOORD_PTR;

{Bl4d3}
16-12-2005, 08:34
senti, forse è solo una mia opinione, ma il tuo codice è un pò
caotico. non si capisce molto bene come dovrebbe funzionare
questo algoritmo, cmq da quello che ho capito dovrebbe essere
corretto (a parte il fatto che se la tua testa temporanea è il terzo nodo, ora stai esamindo il quinto, sono uguali, generi
random e sfortunatamente esce lo stesso numero che sta nel
primo nodo non lo saprai mai). volendo potresti scrivere le
altre due procedure (e se riscrivi un pò più chiaramente
questa allora forse ti si può aiutare di più...)

Loading