Exemple #1
0
void abb_visitar(nodo_t* nodo,bool visitar(const char*, void*,void*), void *extra){
    if(!nodo){
            return;
    }
    abb_visitar(nodo->nodo_izquierdo,visitar,extra);
    visitar(nodo->clave,nodo->dato,extra);
    abb_visitar(nodo->nodo_derecho,visitar,extra);
}
Exemple #2
0
// Itera la lista aplicandole la funcion visitar a cada dato almacenado, pasandole el parametro extra para que esta lo utilice
// Pre: la lista fue creada
void lista_iterar(lista_t *lista, bool (*visitar)(void *dato, void *extra), void *extra)
{
    if(!lista || !visitar || !extra)
		return;

    lista_iter_t *iter = lista_iter_crear(lista);

    if(!iter)
        return;

    while( !lista_iter_al_final(iter) && visitar(lista_iter_ver_actual(iter), extra) )
       lista_iter_avanzar(iter);

    lista_iter_destruir(iter);

}
Exemple #3
0
void abb_in_order_recursivo(abb_nodo_t* nodo, bool visitar(const char *, void *, void *), void *extra) {
    if(!nodo) return;
    abb_in_order_recursivo(nodo->izq, visitar, extra);
    if(!visitar(nodo->clave, nodo->dato, extra)) return;
    abb_in_order_recursivo(nodo->der, visitar, extra);
}
Exemple #4
0
Fichier : 9.c Projet : nee47/abb
void in_orden(abb_nodo_t* arbol,bool visitar(const char *clave, void *dato, void *extra), void* extra ){
  if (!arbol) return; 
  in_orden(arbol->izquierda, visitar, extra);
  if(!visitar(arbol->clave, arbol->dato, extra)) return;
  in_orden(arbol->derecha, visitar, extra);
}
Exemple #5
0
void lista_iterar(lista_t *lista, bool (*visitar)(void *dato, void *extra), void *extra) {
	lista_iter_t* iter = lista_iter_crear(lista);
	void* dato = lista_iter_ver_actual(iter);
	while ((lista_iter_avanzar(iter)) && (visitar(dato, extra))) dato = lista_iter_ver_actual(iter);
	lista_iter_destruir(iter);
}
Exemple #6
0
void lista_iterar(lista_t *lista, bool (*visitar)(void *dato, void *extra), void *extra){
  nodo_t* nodo = lista->primero;
  while (nodo && visitar(nodo->dato, extra))  nodo = nodo->siguiente;
}