nikpez di nikpez
Ominide 738 punti

Liste - Esercizio C++

Si assuma come data la seguente dichiarazione di tipo:
struct nodo{
int val;
nodo *next;
};
Scrivere in C++ la definizione di una funzione il cui prototipo è:
void split(nodo *lista, nodo *&pari, nodo *&dispari);
e tale che se l, p e d sono variabili di tipo puntatore a nodo allora l’istruzione
split(l,p,d); fa in modo che p e d puntino a liste di interi contenenti rispettivamente i
numeri pari e dispari contenuti nella lista l.
Ad esempio, se l punta ad una lista contenente i numeri 1, 5, 6, 4, 9 allora dopo
l’esecuzione dell’istruzione split(l,p,d); la variabile p punterà ad una lista contenente i
numeri 6 e 4, mentre la variabile d punterà ad una lista contenente i numeri 1, 5 e 9.
Se ritieni opportuno utilizza (e codifica) altre funzioni.
Scrivi l’istruzione di chiamata, definisci (e se necessario, inizializza) le variabili, indica

infine la direzionalità dei parametri.
void split(elem *lista, elem *&pari, elem *&dispari) //I – O - O
{
while(lista)
{
if(lista->num %2 == 0)
insert2(pari, lista->num);
else
insert2(dispari, lista->num);
lista=lista->next;
}
}
void insert(elem *&l, int el) // I/O - I
{
if(!l)
{
l=new elem;
l->num=el;
l->next=NULL;
}
else
insert(l->next, el);
}
elem * list;
elem * puntPari=NULL;
elem * puntDispari=NULL;
split(list,puntPari, puntDispari);

Registrati via email