questo esercizio mi ha spiazzato un pò..praticamente non saprei da dove cominciare
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
*/
ho pensato, scorro le due liste contemporaneamente:
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?