Voglio cancellare uno o più elementi da una lista ma quando ci provo o cancello tutta la lista o nulla...
codice:
[...]
typedef struct OSTACOLO
{
int x0, x1, y0, y1;
struct OSTACOLO *suc;
} OSTACOLO;
OSTACOLO *Ostacolo = NULL;
int inseriscoInTesta(int a, int b, int c, int d)
{
OSTACOLO *nuovo;
nuovo = malloc(sizeof(OSTACOLO));
nuovo->x0 = a;
nuovo->y0 = b;
nuovo->x1 = c;
nuovo->y1 = d;
nuovo->suc = Ostacolo;
Ostacolo = nuovo;
return 0;
}
int main(void)
{
[...]
inseriscoInTesta(a, b, c, d);
[...]
elimina(x, y);
[...]
}
...e fin qui tutto OK...
Il problema viene quando devo scorrere tutta la lista ed eliminare tutti quegli ostacoli che soddisfano TUTTE queste condizioni:
ostacolo_corrente->x0 <= a
a <= ostacolo_corrente->x1
ostacolo_corrente->y0 <= b
b <= ostacolo_corrente->y1
Ho provato una cosa del genere...
codice:
int elimina(int a, int b) // NON FUNZIONA
{
if(Ostacolo != NULL)
Ostacolo = elimina_ostacolo(Ostacolo, a, b);
return 0;
}
OSTACOLO *elimina_ostacolo(OSTACOLO *primo, int a, int b) // NON FUNZIONA
{
OSTACOLO secondo;
primo = elimina_ostacolo(primo->suc, a, b);
if(primo != NULL)
{
if(primo->x0 <= a && a <= primo->x1)
{
if(primo->y0 <= b && b <= primo->y1)
{
printf("da eliminare: %d %d %d %d\n", primo->x0, primo->y0, primo->x1, primo->y1);
}
}
}
return primo;
}
...con scarsisssssssimi risultati...