ciao a tutti, ho un problema con l'unire due liste ordinate in una sola lista ordinata
dovrei farlo con una funzione merge che prenda in input i puntatori al primo nodo delle due liste e restituisca il puntatore al primo nodo della lista unita.
Ho provato a farlo ma mi sono solo che incasinato con i puntatori, come un gatto si incasina con un filo di lana 
Qui vi posto la mia funzione merge, facendo il debugging esce la dove ho segnato in rosso, dice che non può accedere all'indirizzo di memoria :/
qualcuno potrebbe darmi una mano o qualche spiegazione in merito perfavore? grazie in anticipo!
codice:
List1Ptr merge(List1Ptr *s1Ptr, List1Ptr *s2Ptr)
{
List1Ptr firstPtr;
List1Ptr secPtr;
List1Ptr newPtr;
List1Ptr currPtr;
List1Ptr prevPtr;
newPtr=malloc(sizeof(List));
firstPtr=*s1Ptr;
secPtr=*s2Ptr;
currPtr=newPtr;
while(firstPtr!=NULL){
if(firstPtr->i > secPtr->i){
currPtr->i=secPtr->i;
currPtr=currPtr->nextPtr;
currPtr->i=firstPtr->i;
secPtr=secPtr->nextPtr;
firstPtr=firstPtr->nextPtr;
currPtr=currPtr->nextPtr;
}
else{
currPtr->i=firstPtr->i;
currPtr=currPtr->nextPtr;
currPtr->i=secPtr->i;
secPtr=secPtr->nextPtr;
firstPtr=firstPtr->nextPtr;
currPtr=currPtr->nextPtr;
}
}
return newPtr;
}