PDA

View Full Version : Passare da Ricorsivo a Iterativo


Elle98
25-01-2021, 23:17
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:

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:

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:

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

break;

grazie a chi mi può aiutare!!

WarDuck
12-02-2021, 22:41
Ciao, immagino che ormai avrai già risolto, cmq anche se in ritardo ti posso consigliare di provare a ragionare sul fatto che il passo base della ricorsione rappresenta la condizione che ti fa terminare (eventualmente un ciclo), mentre il passo ricorsivo ti fa "progredire" nella scansione della lista.

Non è difficile se ci pensi ;).