nikpez
Ominide
1 min. di lettura
Vota 4 / 5

Concetti Chiave

  • La funzione mancaPari() genera una nuova lista con elementi pari non presenti nella lista originale e minori o uguali a nMax.
  • La nuova lista è ordinata in senso decrescente e viene costruita utilizzando la funzione insertDecrescente().
  • La funzione ricerca() verifica se un multiplo di 2 esiste nella lista originale, restituendo un puntatore se presente.
  • La struttura dati elem è utilizzata per rappresentare gli elementi della lista, con campi per il numero e il collegamento al prossimo elemento.
  • Il programma include una funzione main per inserire dati nella lista, richiedere nMax e stampare le liste originale e nuova.
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 {
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 e risposte

Hai bisogno di aiuto?
Chiedi alla community