questo esercizio mi ha spiazzato un pò..praticamente non saprei da dove cominciare![]()
ho pensato, scorro le due liste contemporaneamente:codice:typedef struct nodo *lista; typedef struct nodo { int val; lista next; }nodo; /* Function: confrontaListe * Usage: L = confrontaListe (L1, L2, &n) * ----------------------------------------------- * Confronta uno ad uno gli elementi corrispondenti delle due liste L1 e L2, che devono * avere uguale lunghezza, costruendo una nuova lista L che contiene gli elementi * corrispondenti che risultano uguali. Se L1 e L2 hanno lunghezza diversa, * restituisce NULL. Il parametro di output n conta il numero di elementi corrispondenti * uguali */
codice:lista confrontaListe(lista L1, lista L2, int *n) { nodo *corrente1; nodo *precedente1; nodo *corrente2; nodo *precedente2; while (corrente1==NULL&&corrente2==NULL){ precedente1=corrente1; precedente2=corrente2; corrente1=corrente1->next; corrente2=corrente2->next; if (corrente1->val==corrente2->val){ //appendi nodo alla nuova lista //incrementa n (non so come) }} }
la strada è giusta?

Rispondi quotando
