void base_destruir(base_t* base){ //destruyo lo interior a la base grafo_destruir(base->mapa); heap_destruir(base->cerradofabricas,NULL); lista_destruir(base->fabricasavisitar,NULL); hash_destruir(base->fabricas); //destruyo la base free(base); }
int main(int argc, char **argv){ if(argc != 2){ return 1; } FILE *archivo = fopen(argv[1], "r"); if(archivo == NULL){ fprintf(stderr, "No se pudo abrir el archivo"); return 1; } hash_t *hash_lineas = hash_crear(NULL); filtrar_e_imprimir_lineas(archivo, hash_lineas); hash_destruir(hash_lineas); return 0; }
base_t *base_crear(){ //creo la base base_t* base = malloc(sizeof(base_t)); if (base == NULL) return NULL; //creo los componentes de la base base->mapa = grafo_crear(); base->fabricas = hash_crear((hash_destruir_dato_t)destruir_fabrica); base->cerradofabricas = heap_crear((cmp_func_t)fabrica_cierra_primero); base->fabricasavisitar = lista_crear(); //verifico si los componentes se crearon correctamente if ((base->mapa==NULL) || (base->fabricas==NULL) || (base->cerradofabricas==NULL) || (base->fabricasavisitar==NULL)){ if (base->mapa!=NULL) grafo_destruir(base->mapa); if (base->cerradofabricas!=NULL) heap_destruir(base->cerradofabricas,NULL); if (base->fabricasavisitar!=NULL) lista_destruir(base->fabricasavisitar,NULL); if (base->fabricas!=NULL) hash_destruir(base->fabricas); return NULL; } base->capacidad = 0; base->polonorte = 0; //todo exitoso return base; }
// Liberar un hash y cierra 2 archivos void liberar(hash_t* hash, FILE* a1, FILE* a2){ if(hash) hash_destruir(hash); fclose(a1); fclose(a2); }