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

  1. Qual è lo scopo della funzione mancaPari()?
  2. 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.

  3. Come viene gestita la creazione della nuova lista all'interno della funzione mancaPari()?
  4. 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.

  5. Qual è il ruolo della funzione ricerca() nel contesto della funzione mancaPari()?
  6. 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().

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community