Voglio cancellare uno o più elementi da una lista ma quando ci provo o cancello tutta la lista o nulla...![]()
...e fin qui tutto OK...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); [...] }
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...
...con scarsisssssssimi risultati...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; }![]()


Rispondi quotando
VVoVe: il programma completo sono più di 1000 righe...