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??