void abb_destruir_auxiliar(abb_t* arbol,nodo_t* nodo){ if (!nodo){ return; } abb_destruir_auxiliar(arbol,nodo->nodo_izquierdo); abb_destruir_auxiliar(arbol,nodo->nodo_derecho); borrar_nodo(arbol,nodo); return; }
main(){ // Apuntador al primer elemento de la lista Nodo* lista = NULL; // Pruebas para función insertar_cola lista = insertar_cola(lista, 7); lista = insertar_cola(lista, 4); lista = insertar_cola(lista, 12); // Pruebas para función insertar_tope lista = insertar_tope(lista, 2); lista = insertar_tope(lista, 5); lista = insertar_tope(lista, 3); // Pruebas para función insrtar_tope_m. // Nótese que se tiene una llamada más limpia e intuitiva que la de // insetar_tope. insertar_tope_m( &lista, 6); insertar_tope_m( &lista, 10); insertar_tope_m( &lista, 22); // Se mustra la lista creada. mostrar_lista(lista); printf("La longitud de la lista es: %d\n\n" , longitud(lista)); borrar_nodo(&lista, 2); borrar_nodo(&lista, 0); mostrar_lista(lista); printf("La longitud de la lista es: %d\n\n" , longitud(lista)); // Liberación de la lista. liberar_lista(&lista); // Si le la lista fue liberada no debe mostrarse elemento alguno. mostrar_lista(lista); }
/* Remove a file */ int fs_unlink(const char *path) { //logger_info(logger, "Elimino archivo:"); //logear_path("fs_unlink", path); char* temp = string_from_format(path, "%s"); // no uso string_duplicate para evitar el warning de tipos. int err = 0; uint32_t bloque = 0; err = buscar_bloque_nodo(temp, &bloque); free(temp); if (err) { return -ENOENT; } err = borrar_nodo(bloque); if (err) { return err; } // marcar los bloques en el mapa de bits como vacios err = liberar_espacio(bloque); if (err) { return err; } return EXIT_SUCCESS; }
void main() { void borrar_nodo (struct nodo **raiz,struct nodo *q, struct nodo *p); struct nodo *raiz,*p,*q; int n,si,encontro; void inorden (struct nodo *); void ins_der (struct nodo *p,int n); void ins_izq (struct nodo *p,int n); int lea_entero (); printf ("de numero\n"); n = lea_entero(); raiz = nodo_arbol; raiz->info = n; raiz->izq = NULL; raiz->der = NULL; printf ("de numero\n"); n = lea_entero(); while (n != 9999) { p = q = raiz; while (p->info != n && q != NULL ) { p = q; if (n < p->info) q = q->izq; else q = q->der; } if (p->info == n) printf ("numero repetido\n"); else if (n < p->info) ins_izq (p,n); else ins_der (p,n); printf ("de numero\n"); n = lea_entero (); } printf ("Desea retirar un nodo ? (s/n) \n"); si = getch(); while (si == 's') { printf ("\nDe nodo a retirar \n"); n=lea_entero(); p=raiz; q=NULL; encontro = 0; while (p && !encontro) if (p->info == n) encontro = 1; else { q = p; if (n < p->info) p = p->izq; else p = p->der; } if (!encontro) printf ("No existe\n"); else borrar_nodo (&raiz,q,p); printf ("Desea retirar mas nodos? (s/n) \n"); si = getch(); } printf ("\n"); inorden (raiz); printf ("\n"); }