PDA

Visualizza la versione completa : [c Ricorsione]


robyp
14-07-2004, 12:50
Salve,

Scusate ho trovato questo algoritmo per l'attravversamento ricorscivo in preordine(prima la radice e poi i figli) di un albero ma non capisco perchŔ passa ricorsivamente come parametro anche l'indirizzo della funzione visit..perchŔ? non basta richiamare semplicemente visit(h) invece di (*visit)(h)??Il passaggio di un puntatore alla funzione in questo caso che utilitÓ ha?

void traverse(link h, void (*visit)(link)){
if(h==NULL) return; //se Ŕ il ramo dx e sx di una foglia
(*visit)(h); //visito il nodo
traverse(h->l, visit);//vado a visitare il ramo sx
traverse(h->r, visit);//.. dx
}

Grazie!

mrYellow
14-07-2004, 14:06
dato che chi ha scritto il codice non sapeva che operazione sarebbe stata compiuta sul nodo dell'albero ha inserito un puntatore a funzione tra gli argomenti in modo che tu potessi scrivere una funzione adatta a ci˛ che ti serve e poi passarla alla funzione traverse(...) senza dover toccare il codice di traverse stessa.

unomichisiada
14-07-2004, 17:44
Potenza del C.... :unz:

Loading