/* Elimina el heap, llamando a la función dada para cada elemento del mismo. * El puntero a la función puede ser NULL, en cuyo caso no se llamará. * Post: se llamó a la función indicada con cada elemento del heap. El heap * dejó de ser válido. */ void heap_destruir(heap_t *heap, void destruir_elemento(void *e)){ if (destruir_elemento) for (size_t i = 0; i < heap->cant; i++) destruir_elemento(heap->datos[i]); free(heap->datos); free(heap); }
bool heap_destruir(heap_t *heap, void destruir_elemento(void *e)){ if (heap==NULL) return false; int i; if (destruir_elemento){ for(i=0;i<heap->cantidad;i++){ destruir_elemento(heap->datos[i]); } } free(heap->datos); free(heap); return true; }