Ragazzi ma secondo voi xchè questo codice fa' l inverso di quello che dovrebbe fare? ovvero, io ho una lista di cui voglio scandire gli elementi per togliere quelli che , in base ad un operazione,mi risultano essere i piu' lontani da un punto, e tenere solo quelli con la distanza minore;
i nodo lista hanno un campo int dist,x,y; e testa punta all inizio della lista, x e y sono le 2 coordinate:
void cerca_minimo(int x, int y){
nodo *p;
int dist;
for(p = testa; p!=NULL; p = p->next){
do {
dist = (abs(x - p->x)) + (abs(y - p->y));/*operazione per distanza*/
p->dist = dist;/*inserisco nel campo di ciascun nodo il suo dist*/
if (p->dist > p->next->dist)
testa = elimina(testa,p); /*funz. che elimina un nodo da lista*/
else if (p->dist < p->next->dist)
testa = elimina_pref(testa,p->next);
} while (p->next!=NULL);
}
}
tks![]()