Domanda Passare da Ricorsivo a Iterativo

Elle98

Utente Bronze
20 Marzo 2016
12
4
0
32
Ultima modifica da un moderatore:
Buonasera ragazzi, ho un piccolo problema con questa struttura dati dinamica. In pratica vorrei far diventare questa funzione ricorsiva, in modo iterativo. Qualcuno riesce ad aiutarmi? posto il codice:

C:
typedef char string[SIZE];


// Creo la struttura per contenere i contatti
typedef struct{
  string nome;
  string cognome;
  string telefono;
  string email;
  string sitoweb;
} t_contatto;


// Creo la struttura per creare la lista
typedef struct nodo{
  t_contatto inf;
  struct nodo *pun;
} Nodo;


typedef Nodo * Lista;


questa è invece la funzione:


C:
void InserisciContatto(Lista *pLista, Nodo * info)
{
  if (!(*pLista))
   *pLista = info;
  else if (strcmp(info->inf.cognome, (*pLista)->inf.cognome)>0)
    InserisciContatto(&((*pLista)->pun), info);
  else  
  {
   info->pun = *pLista;  
   *pLista = info;
  }
}

l'allocazione avviene nel main nel seguente case:

C:
case 2:
            p = (Nodo*) malloc(sizeof(Nodo));
            p->pun =NULL;
            LeggiContatto (&p->inf);
            InserisciContatto(&lista, p)
           
            break;

grazie a chi mi può aiutare!!
 
Non capisco cosa vuoi ottenere, c'e' qualcosa che non va in InserisciContatto per com'e' adesso. Cosa deve fare questa funzione oltre ad inserire un nodo?
Se devi solo inserire il nodo in coda non ti serve ne' la strcmp ne' la ricorsione. Cioe' si potrebbe anche fare con la ricorsione ma se la lista cresce troppo rischi lo stack overflow.
 
nono funziona perfettamente, il problema è che sto facendo un compito per esame, la consegna è di fare la funziona in modo iterativo. Questa funzione utilizza la ricorsione come dicevi tu si rischia lo stack overflow. il mio problema è che non so fare tornare questa funziona in modo iterativo.Se qualcuno mi può aiutare con qualche rigo di codice o un aiuto.