sono giunto alla conclusione che l'unica cosa che non va bene in questi iteratori è la funzione next..
faccio un rapido riassunto sperando che qualcuno mi possa dare uno spunto per la correzione:
le strutture sono queste:
codice:
struct NodoLista {
void *value;
struct NodoLista *next;
};
typedef struct NodoLista *list;
struct nodoIt {
list *punt;
};
typedef struct nodoIt *iterator;
tramite la funzione get_iterator si assegna a un iteratore una lista
codice:
iterator get_iterator(list l) {
iterator I;
I = malloc(sizeof(struct nodoIt));
if (!l) return NULL;
I->punt = l;
return I;
}
ora a me serve una funzione che faccia semplicemente scorrere l'iteratore di una posizione avanti. L'ho fatta in qyesto modo:
codice:
void *next(iterator i) {
list t = NULL;
t = (list *) i->punt;
if (t->next == NULL) return NULL;
t = t->next;
i->punt = t;
}
effettivamente la funzione mi fa scorrere l'iteratore avanti pero quando la lista finisce mi va in segmentation default.. come posso fare??