Ciao a tutti ho un problema ... devo realizzare un algoritmo di fusione di 2 liste ( realizzate con vettori)
il risultato deve essere una terza lista "ordinata"... nel mio codice vengono solo fuse le 2 lista ma il risultato nella terza lista non è ordinato.
questo è il mio codice :
codice:
ListaV ListaV::fusione(ListaV &l1, ListaV &l2){
ListaV l3;
posizione p,q,r;
tipoelem ele1, ele2;
p=l1.primoLista();
q=l2.primoLista();
r=l3.primoLista();
while ((!l1.fineLista(p)) && (!l2.fineLista(q))) {
ele1=l1.leggiLista(p);
ele2=l2.leggiLista(q);
if (ele1<ele2){
l3.insLista(ele1,r);
p=l1.succLista(p);
}else{
l3.insLista(ele2,r);
q=l2.succLista(q);
r=l3.succLista(r);
}//else era qui
while(!l1.fineLista(p)){
l3.insLista(l1.leggiLista(p),r);
p=l1.succLista(p);
r=l3.succLista(r);
}//
while(!l2.fineLista(q)){
l3.insLista(l2.leggiLista(q),r);
q=l2.succLista(q);
r=l3.succLista(r);
}//
}
return l3;
}
qualcuno mi spiega dove sbaglio , cioè il risultato non esce ordinato??
aspetto un vostro aiuto... grazie