Buonasera a tutti..ho alcuni problemi con il seguente esercizio.
In pratica, sono riuscita a fare la versione iterativa ma non riesco a fare una versione ricorsiva che non mi dia problemi..Vi posto il testo :
Progettare un algoritmo ricorsivo sottoforma di function che date due linked list head1 e head2 (con campo info di tipo integer), restituisca TRUE se head2 è sottolista di head1, FALSE altrimenti.
Ad es. se in input si ha
head1= 2 -> 0 -> 10 -> 1 -> 21 -> 11
head2= 0 -> 10 -> 1
la function ritorna TRUE.
Altrimenti se:
head1= 2 -> 0 -> 10 -> 1 -> 21 -> 11
head2= 0 -> 1 -> 21
la function ritorna FALSE.
Ho fatto tante prove una delle quali è la seguente. Il punto è che durante l'esecuzione il programma mi salta le chiamate alla funzione ricorsiva.
Spero possiate aiutarmi, grazie a tutti!codice:bool sottolista(list *head1,list *head2){ if(head1->info != head2->info) sottolista(head1->next,head2); if(head1 != NULL && head2 != NULL){ if(head1 -> info == head2 ->info) sottolista(head1->info,head2->info); else return false;} if(head2 == NULL) return true; }

Rispondi quotando