Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/01/2014, 05:49
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Obtener datos de una función recursiva

Sugiero agregar a la funcion recursiva un parametro adicional, que sea un puntero a una funcion que realiza lo que quieres hacer con cada nodo. Esto no es evidente en la funcion recursiva. Es como una solucion generica a este nivel. Los detalles estan en la implementacion de la funcion que será pasada como parametro.

Código C++:
Ver original
  1. void funcionRecursiva( Nodo* pnodo, void (*pfunc)( Nodo* ) )
  2. {
  3.     //...
  4.  
  5.     // cuando sea necesario,
  6.     // en medio de la funcion recursiva, invocar la funcion pfunc
  7.     pfunc( pnodo );
  8.  
  9.     // ...
  10. }

La funcion puede hacer lo que quieras, por ejemplo imprimir

Código C++:
Ver original
  1. void imprimirNodo( Nodo* pnodo )
  2. {
  3.    // se me ocurre que los > 100 solo pueden imprimirse
  4.    if( pnodo->valor > 100 )  
  5.    {
  6.         cout << pnodo->valor << " ";
  7.    }
  8. }
y luego invocar la funcion recursiva asi:

Código C++:
Ver original
  1. int main()
  2. {
  3.     Nodo* grafo = construirGrafo();
  4.  
  5.     funcionRecursiva( grafo, imprimirNodo );
  6.     return 0;
  7. }

Si necesitas otras funciones, que hagan otra cosa con cada nodo,
basta definirlas con distinto nombre e invocarlas usando el 2do parametro de la funcion.

Código C++:
Ver original
  1. void ponerEnCero( Nodo* pnodo )
  2. {
  3.     pnodo->valor = 0;
  4. }
  5.  
  6. // ... en alguna parte, donde se haga necesario
  7.       funcionRecursiva( grafo, ponerEnCero );
__________________
Visita mi perfil en LinkedIn