Guarda che effettivamente si chiama lista.

Comunque N non serve come parametro. Per la cancellazione di un elemento:

  • Il primo elemento è un caso speciale
  • Dopo ti basta fare
    codice:
    struct elemento *tmp;
    if(check(lista->next->value)) {
      tmp = lista->next;
      lista->next = list->next->next;
      free(tmp);
    }



Ovviamente questo è solo pseudocodice, il resto fallo tu...