EnergyVortex
05-07-2011, 11:40
Ciao a tutti, sto svolgendo un esercizio che mi chiede di creare una funzione ricorsiva che prese in input due liste di interi doppimanete puntate me le vada a modificare in vario modo. Ad esempio mi viene chiesto di togliere da L1 tutti i numeri multipli di 3 e di aggiungerli in testa ad L2.
Ho pensato che l'unico modo per risolvere il problema è usare dei doppi puntatori così da poter modificare entrambe le liste, ho,però, dei dubbi sulla sintassi che ho usato.
Vi posto il pezzo di codice che toglie L1 i multipli di 3 e li mette in testa ad L2.
struct elemento
{
struct elemento *prev;
struct elemento*next;
int inf;
}
void controlla (struct elemento **L1,struct elemento **L2)
{
if (*L1!=NULL)
{
if ((*L1)->inf%3)==0)
{
struct elemento *Temp;
Temp=(struct elemento*)malloc(sizeof(struct elemento));
Temp->inf=(*L1)->inf;
Temp->prev=NULL;
(*L2)->prev=Temp;
Temp->next=*L2;
*L2=Temp;
}
}
}
Vi sembra corretto il codice? Sono in dubbio sopratutto sulla parte in cui vado a mettere in testa il nuovo nodo....
Ho pensato che l'unico modo per risolvere il problema è usare dei doppi puntatori così da poter modificare entrambe le liste, ho,però, dei dubbi sulla sintassi che ho usato.
Vi posto il pezzo di codice che toglie L1 i multipli di 3 e li mette in testa ad L2.
struct elemento
{
struct elemento *prev;
struct elemento*next;
int inf;
}
void controlla (struct elemento **L1,struct elemento **L2)
{
if (*L1!=NULL)
{
if ((*L1)->inf%3)==0)
{
struct elemento *Temp;
Temp=(struct elemento*)malloc(sizeof(struct elemento));
Temp->inf=(*L1)->inf;
Temp->prev=NULL;
(*L2)->prev=Temp;
Temp->next=*L2;
*L2=Temp;
}
}
}
Vi sembra corretto il codice? Sono in dubbio sopratutto sulla parte in cui vado a mettere in testa il nuovo nodo....