Salve a tutti vorrei un aiuto per applicare il marge sort sulla fusione di due liste.

questo è il codice di fusione che mi sono fatto per le due liste date come parametri

codice:
ListaV ListaV::fusione(ListaV &l1,ListaV &l2){
     
     ListaV l3;
     posizione p1,p2,p3;
     tipoelem e1,e2,e3;
     
     p1=l1.primoLista();
     p2=l2.primoLista();
     p3=l3.primoLista();
     
     while ((!l1.fineLista(p1))&&(!l2.fineLista(p2))){
           e1=l1.leggiLista(p1);
           e2=l2.leggiLista(p2);
           if (e1<e2){
                      l3.insLista(e1,p3);
                      p1=l1.succLista(p1);
                      }else{
                            l3.insLista(e2,p3);
                            p2=l2.succLista(p2);
                            p3=l3.succLista (p3);
                             }//if,else
                           
     while (!l1.fineLista(p1)){//while2
           l3.insLista(l1.leggiLista(p1),p3); 
           p1=l1.succLista(p1); 
           p3=l3.succLista(p3);
           }//while2
     while (!l2.fineLista(p2)){//while3 
           l3.insLista(l2.leggiLista(p2),p3); 
           p2=l2.succLista(p2); 
           p3=l3.succLista(p3);
           }//while3 
     
     
    }//while
     
  
     
     
     return l3;
     
     
     };
come posso crearmi il merge sort?
grazie