[c++] Liste
Ciau a tutti volevo chiedervi se il codice è giusto
L'esercizio è:
Si consideri una lista concatenata semplice di dati su alberghi caratterizzati dal loro nome, dalla partita IVA e dal numero di camere doppie e singole. La struttura della lista è:
Si implementi la funzione di prototipo Lista estraiInOrdine( Lista lis ) che riceve una lista non ordinata e restituisce una lista contenente solo gli alberghi con più doppie che singole ordinati per partitaIVA. Si utilizzino opportune funzioni ausiliarie per dividere il problema in sottoproblemi più semplici.
allor io ho fatto:
è corretta?
se voglio avere una lista ordinata per iva come faccio?
L'esercizio è:
Si consideri una lista concatenata semplice di dati su alberghi caratterizzati dal loro nome, dalla partita IVA e dal numero di camere doppie e singole. La struttura della lista è:
typedef struct Node { int partitaIVA; char * nome; int numSingole; int numDoppie; struct Node * next; } Nodo; typedef Nodo * Lista;
Si implementi la funzione di prototipo Lista estraiInOrdine( Lista lis ) che riceve una lista non ordinata e restituisce una lista contenente solo gli alberghi con più doppie che singole ordinati per partitaIVA. Si utilizzino opportune funzioni ausiliarie per dividere il problema in sottoproblemi più semplici.
allor io ho fatto:
Lista Estrai(lista lis){ Lista tmp; tmp=NULL; While(lis!=NULL){ if((lis-> NumDoppie)> (lis->NumSingole)) inseriamolista(&tmp, lis-> NumDoppie); lis=lis->Next;} void Inseriamolista(Lista *lis,Nodo a){ lista temp; temp=Malloc(sizeof(Nodo)); temp->Numdoppie=a; temp->next=*lis; *lis=temp;}
è corretta?
se voglio avere una lista ordinata per iva come faccio?
Risposte
Devi implementare un qualche algoritmo di ordinamento. Con le liste l'odd-even merge sort è particolarmente efficiente. Si tratta dell'algoritmo merge sort in cui la separazione in sottoliste avviene prendendo la lista dei nodi pari e di quelli dispari. Questo ordinamento può essere implementato senza allocazione di memoria nel caso di liste.
Ci sono diverse cose strane nel codice che hai postato. Per prima cosa non sembra C++, ma C. In particolare in C++ non è necessario (e appare molto strano) l'uso di typedef nella dichiarazione della struttura e si preferisce usare new a malloc. Ci sono comunque parecchi problemi di identificatori e parole chiave scritte in modo errato. Nel C++ lettere maiuscole e minuscole sono diverse! Quindi si deve fare molta attenzione.
Ci sono diverse cose strane nel codice che hai postato. Per prima cosa non sembra C++, ma C. In particolare in C++ non è necessario (e appare molto strano) l'uso di typedef nella dichiarazione della struttura e si preferisce usare new a malloc. Ci sono comunque parecchi problemi di identificatori e parole chiave scritte in modo errato. Nel C++ lettere maiuscole e minuscole sono diverse! Quindi si deve fare molta attenzione.