Esercizio di analisi (Es. n. 3, 1 luglio 1999, Fondamenti di Informatica, Ambiente e Territorio)

La funzione Boh, definita nel seguente frammento di programma C:
 
#include <stdio.h>
typedef struct e {
    int info;
    struct e *next;
} elem;
elem *Boh(elem *ptesta, int zz)
{
    if(ptesta==NULL)
        return NULL;
    else if(ptesta->info==zz)
        return ptesta;
    else
        return Boh(ptesta->next, zz);
}


effettuta una semplice scansione di una lista, a partire dall'elemento il cui indirizzo è specificato dal valore del parametro ptesta. La scansione continua fino a quando si verifica una fra le seguenti condizioni:

  1. si è trovato un elemento della lista nel cui campo info è presente un valore eguale a quello specificato dal valore del parametro zz;
  2. la scansione della lista è terminata.
Nel primo caso la funzione restituisce NULL, nel secondo restituisce l'indirizzo dell'elemento contenente il valore zz nrel campo info. Nel caso particolare in cui sono presenti più elementi contenenti zz nel campo info, la funzine restituisce l'indirizzo del primo che trova.

La chiamata Boh(Boh(Boh(pelem,x),x),x) restituisce lo stesso valore restituito dalla chiamata Boh(pelem,x).