Ваш динамический массив, представленный типом struct _Lista
, , не содержит "элементы любого типа". По крайней мере, не напрямую. Он содержит только и точно элементы типа void *
. Почти все, что вы написали, будет работать, если вы измените тип iterator
соответственно на указатель double :
typedef void **iterator;
Обратите внимание, однако, что эта реализация итератора имеет серьезный недостаток: она не несет никакой информации о границах списка. Это может быть хорошо, если вы убедитесь, что после последнего допустимого элемента есть значение часового (и, может быть, и до первого), но в противном случае вам понадобится более сложная структура данных, чем один указатель.