Ho un piccolo problema con la fusione di due liste passate come parametro ad una funzione che restituisce la lista risultato. Ho scritto già interamente tutto il codice, e credo che la logica sia pienamente quella giusta, infatti nella maggior parte dei casi funziona, con determinate stringhe però, l'algoritmo non funziona più come dovrebbe, e il programma va in loop. Dove sta l'errore ?
codice:
nodo *fusion_liste(nodo *head, nodo *head2){
nodo *new_nodo;
if((head!=NULL)||(head2!=NULL)){
if(head==NULL){
new_nodo=dup_lista(head2);
}
else if(head2==NULL){
new_nodo=dup_lista(head);
}
else if(strcmp(head->stringa,head2->stringa)<0){
new_nodo=create_nodo(head->stringa);
new_nodo->next=fusion_liste(head->next,head2);
}
else{
new_nodo=create_nodo(head2->stringa);
new_nodo->next=fusion_liste(head,head2->next);
}
}
return new_nodo;
}
nodo *dup_lista(nodo *n){
nodo *dup=NULL;
if(n!=NULL){
dup=create_nodo(n->stringa);
if(n->next!=NULL)
dup->next=dup_lista(n->next);
}
return dup;
}