Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve ragazzi, sto cercando di fare un esercizio con le liste, soltanto non capisco dove possa essere l' errore...
L' es. consiste nell' unire due liste passate ad una funzione che mi restituisce un puntatore a struttura.
Inoltre NON devo verificare se le liste siano già ordinate.
Ecco qui come ho cercato di svolgere l' esercizio..
allora la struttura è così:
Codice sorgente - presumibilmente C++
struct node {
int inf;
struct node * pun;
};
typedefstruct node node;
e invece la mia funzione è questa...dove sbaglio?
Codice sorgente - presumibilmente C/C++
node * funz(node * l1, node * l2) {
node * ptr, * succ, * prec;
while(l1!=NULL) {
succ=l1->pun;
prec=NULL;
ptr=l2;
while(ptr!=NULL) {
if(ptr->inf >= l1->inf) {
if(prec==NULL) {
l1->pun=ptr;
l2=l1;
}
else {
prec->pun=l1;
l1->pun=ptr;
}
}
prec=ptr;
ptr=ptr->pun;
}
if(succ!=NULL) l1=succ;
else return l2;
}
}
Allora quello che cerco di fare è questo:
io ho due liste, l1 ed l2, e l' idea mia è quella di spostare ogni elemento della prima lista nella seconda, in questo modo, mi rimarrebbe diciamo la seconda lista.
Così facendo quando arrivo alla fine ritorno il puntatore alla testa della seconda lista.
Vi ringrazio in anticipo per le risposte!
Ultima modifica effettuata da spaghetto il 05/01/2008 alle 11:37
Ma non basterebbe prendere l'ultimo elemento della lista l1, farlo puntare al primo elemento della lista l2 e poi ritornare un puntatore al primo elemento della lista l1?
Come ha detto piero è la migliore soluzione visto che hai detto che sono già ordinate, inoltre se la lista unita deve essere indipendente dalle altre due ti consiglio di fare una copia della uno e della due e poi fare puntare l'ultimo elemento della 2 al primo elemento della 1.
Ultima modifica effettuata da bangirasu il 17/01/2008 alle 14:38
No ragazzi mi sono spiegato male, l' esercizio consisteva sì nella fusione di due liste, ma ordinate! Devo unirle creando questa liste con gli elementi ordinati...
lo avevo risolto in questo modo...
Specifico che le liste dovevano essere inserite in input con gli elementi ordinati...
Ah! adesso ho capito! Ogni lista è ordinata ma gli elementi della prima lista non sono tutti minori di ogni elemento della seconda, cioè bisogna fare una cosa del genere: