void pruebas_heap_alumno(){ heap_t* heap = heap_crear(func_comp); print_test("El heap esta vacio", heap_esta_vacio(heap)); print_test("Ver max del heap es NULL", heap_ver_max(heap) == NULL); int a = 5, b = 6, c = 8, d = 7, e = 10; print_test("Encolo el primer elemento (a)",heap_encolar(heap, &a)); print_test("El maximo del heap es a ",heap_ver_max(heap) == &a); print_test("Encolo el segundo elemento (b)", heap_encolar(heap,&b)); print_test("El maximo del heap es el segundo elemento (b): ", heap_ver_max(heap) == &b); print_test("La cantidad del heap es 2", heap_cantidad(heap) == 2); print_test("Encolo el tercer elemento (c): ", heap_encolar(heap,&c)); print_test("El maximo del heap es el tercer elemento (c)", heap_ver_max(heap) == &c); print_test("Encolo el cuarto elemento (d) ", heap_encolar(heap,&d)); print_test("El maximo del heap sigue siendo el tercer elemento (c)", heap_ver_max(heap) == &c); print_test("La cantidad del heap es 4", heap_cantidad(heap) == 4); print_test("Encolo el quinto elemento (e) ", heap_encolar(heap, &e)); print_test("El maximo del heap es el quinto elemento", heap_ver_max(heap) == &e); print_test("Desencolo", heap_desencolar(heap) == &e); print_test("Desencolo", heap_desencolar(heap) == &c); print_test("Desencolo", heap_desencolar(heap) == &d); print_test("Desencolo", heap_desencolar(heap) == &b); print_test("Desencolo", heap_desencolar(heap) == &a); print_test("El heap esta vacio", heap_esta_vacio(heap)); //pruebas_heapify(); //pruebas_heapsort(); //pruebas_heap_crear_arr(); heap_destruir(heap,NULL); }
void pruebas_volumen(void){ printf("PRUEBAS DE VOLUMEN:\n"); heap_t* heap=heap_crear(int_cmp); int elementos[1000][1]; bool ok=true; for(int i=0;i<1000;i++){ *elementos[i]=i; if(!(ok=heap_encolar(heap,elementos[i]))){ break; } } print_test("Se encolaron todos los elementos..",ok); print_test("Longitud correcta...",heap_cantidad(heap)==1000); print_test("Ver max correcto...",heap_ver_max(heap)==elementos[999]); for(int i=999;i>=0;i--){ int* elemento=heap_desencolar(heap); if(!(ok=(*elemento==i))){ break; } } print_test("Los elementos se desencolaron en orden...",ok) print_test("Longitud correcta...",heap_cantidad(heap)==0); print_test("Ver max correcto...",heap_ver_max(heap)==NULL); heap_destruir(heap,NULL); }
void pruebas_heap_vacio(void){ heap_t* heap=heap_crear(int_cmp); print_test("Heap vacío...",heap_cantidad(heap)==0); print_test("Ver max es NULL...",heap_ver_max(heap)==NULL); print_test("Desencolar es NULL...",heap_desencolar(heap)==NULL); heap_destruir(heap,NULL); }
heap_t *heapify(void *elementos[], size_t cant, cmp_func_t cmp) { heap_t* heap_aux=heap_crear(cmp); int i; for (i=0; i<cant;i++){ heap_encolar(heap_aux, elementos[i]); } return heap_aux; }
void pruebas_enteros(void){ heap_t* heap=heap_crear(int_cmp); printf("ELEMENTOS ORDENADOS:\n"); int elementos[10]={0,1,2,3,4,5,6,7,8,9}; bool ok=true; for(int i=0;i <10;i++){ if(!(ok=heap_encolar(heap,&elementos[i]))){ break; } } print_test("Se encolaron todos los elementos..",ok); print_test("Longitud correcta...",heap_cantidad(heap)==10); print_test("Ver max correcto...",heap_ver_max(heap)==&elementos[9]); for(int i=9;i>=0;i--){ int* elemento=heap_desencolar(heap); if(!(ok=(*elemento==i))){ break; } } print_test("Los elementos se desencolaron en orden...",ok) print_test("Longitud correcta...",heap_cantidad(heap)==0); print_test("Ver max correcto...",heap_ver_max(heap)==NULL); printf("ELEMENTOS DESORDENADOS:\n"); int e_desordenados[10]={9,4,6,2,7,5,8,3,1,0}; for(int i=0;i<10;i++){ if(!(ok=heap_encolar(heap,&e_desordenados[i]))){ break; } } print_test("Se encolaron todos los elementos..",ok); print_test("Longitud correcta...",heap_cantidad(heap)==10); print_test("Ver max correcto...",heap_ver_max(heap)==&elementos[9]); for(int i=9;i>=0;i--){ int* elemento=heap_desencolar(heap); if(!(ok=(*elemento==i))){ break; } } print_test("Los elementos se desencolaron en orden...",ok) print_test("Longitud correcta...",heap_cantidad(heap)==0); print_test("Ver max correcto...",heap_ver_max(heap)==NULL); heap_destruir(heap,NULL); }
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; }