nikpez di nikpez
Ominide 738 punti

Esercizio C - Lista

Sia data una lista di elementi interi positivi, ordinata in senso crescente. Si scriva la funzione mancaPari(), che riceva come
argomenti il puntatore alla lista ed un numero intero nMax. La funzione restituisce un puntatore ad una nuova lista ordinata in
senso decrescente che contiene tutti gli elementi multipli di 2 minori o uguali a nMax non present i nella lista originaria.
elem * mancaPari(elem * testa, int nMax)
{
int multiplo=2;
elem* nuovaLista=NULL;
while(multiplo<=nMax)
{
elem* punt=ricerca(testa,multiplo);
if(punt==NULL)
nuovaLista=insertDecrescente(nuovaLista,multiplo);
multiplo+=2;
}
return nuovaLista;
}
elem * insertDecrescente(elem * nuovaLista, int multiplo)
{
elem* p = new elem;
p->num = multiplo;
p->link = nuovaLista;
nuovaLista = p;

return nuovaLista;
}
elem * ricerca(elem * inizio, int multiplo)
{
for( ; inizio; inizio=inizio->link)
if(inizio->num==multiplo)
return inizio;
return NULL;
}
#define TAPPO 0
struct elem{
int num;
elem * link;
};
//elem * insert(); //PILA
void insert(elem ** inizio, elem **fine); //CODA
void stampa(elem * inizio);
elem * mancaPari(elem * testa, int nMax);
elem * insertDecrescente(elem * nuovaLista, int multiplo);//E' una
//pila!!!
elem * ricerca(elem * inizio, int multiplo);
int main()
{
//elem * testa=insert(); //PILA
elem *testa=NULL; //CODA
elem *coda=NULL;
insert(&testa,&coda);
int nMax;
printf("Digita un numero intero positivo\n");
scanf("%d",&nMax);
fflush(stdin);
stampa(testa);
elem *nuovaLista=mancaPari(testa,nMax);
stampa(nuovaLista);
getchar();
}

Registrati via email