const char* hash_iter_ver_actual(const hash_iter_t* iter) { if (hash_iter_al_final(iter)) return NULL; nodo_hash_t* nodo = lista_iter_ver_actual(iter->iter); if (nodo != NULL) return (nodo->clave); return NULL; }
bool hash_iter_avanzar(hash_iter_t *iter){ if(hash_iter_al_final(iter)) return false; lista_iter_avanzar(iter->iter_lista); if (lista_iter_al_final(iter->iter_lista)) { iter->indice_actual++; while (iter->indice_actual < iter->hash->largo){ if (iter->hash->tabla[iter->indice_actual]){ lista_iter_destruir(iter->iter_lista); iter->iter_lista = lista_iter_crear(iter->hash->tabla[iter->indice_actual]); return true; } iter->indice_actual++; } } return true; }
bool hash_iter_avanzar(hash_iter_t* iter) { //verifico no estar ya al final if (hash_iter_al_final(iter)) return false; //avanzo y verifico no estar ahora al final lista_iter_avanzar(iter->iter); if (!lista_iter_al_final(iter->iter)) return true; //como estoy al final de la lista, busco si tengo a donde seguir if (iter->posicion == (iter->hash->tamanio)-1) return false; //como lo tengo, busco size_t posicion = buscar_no_vacia(iter->hash,iter->posicion+1); if (!lista_esta_vacia(iter->hash->tabla[posicion])) { lista_iter_destruir(iter->iter); iter->iter = lista_iter_crear(iter->hash->tabla[posicion]); iter->posicion = posicion; return true; } return false; }
bool hash_iter_avanzar(hash_iter_t* iter){ if(hash_iter_al_final(iter)){ return false; } if( iter->elemento->siguiente) { iter->elemento = iter->elemento->siguiente; } else { do{ iter->index++; if(iter->index>iter->tabla_hash->tam-1){ break; } iter->elemento=iter->tabla_hash->elementos_hash[iter->index]; }while( iter->elemento == NULL); } iter->iterados++; return true; }
const char *hash_iter_ver_actual(const hash_iter_t *iter){ if (hash_iter_al_final(iter)) return NULL; daton_t* aux = lista_iter_ver_actual(iter->iter_lista); if (!aux) return NULL; return aux->clave; }
const char* hash_iter_ver_actual(const hash_iter_t* iter){ if(hash_iter_al_final(iter)){ return NULL; } return iter->elemento->llave; }