Concetti Chiave
- La funzione mancaPari() crea una nuova lista di numeri pari minori o uguali a nMax, assenti nella lista originale.
- La lista risultante è ordinata in senso decrescente e si basa su una lista di input già ordinata in modo crescente.
- Utilizza una struttura dati definita da un elemento che contiene un numero intero e un puntatore al prossimo elemento.
- Include una funzione di ricerca per determinare se un numero è già presente nella lista originale, evitando duplicati.
- Il main gestisce l'inserimento degli elementi nella lista originale e la stampa della lista risultante dopo la chiamata a mancaPari().
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
{
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();
}
Domande da interrogazione
- Qual è lo scopo della funzione mancaPari()?
- Come viene gestita la creazione della nuova lista all'interno della funzione mancaPari()?
- Qual è il ruolo della funzione ricerca() nel contesto della funzione mancaPari()?
La funzione mancaPari() restituisce una nuova lista ordinata in senso decrescente contenente tutti gli elementi multipli di 2 minori o uguali a nMax che non sono presenti nella lista originaria.
All'interno della funzione mancaPari(), si utilizza un ciclo per trovare i multipli di 2 e, per ciascun multiplo trovato, si crea un nuovo nodo che viene inserito all'inizio della nuova lista, mantenendo così l'ordinamento decrescente.
La funzione ricerca() serve a verificare se un determinato multiplo di 2 è già presente nella lista originale; se non è presente, viene aggiunto alla nuova lista creata dalla funzione mancaPari().