Mi è stato assegnato l'esercizio di scrivere una funzione che copi una lista.
la struttura è :
la funzione crea lista è:
ora la soluzione creata da me è la seguente
mentre la soluzione data è la seguente:
Questo mi ha creato molta confusione a partire subito da
... un puntatore a puntatore? e se si perchè?
Non riesco poi a capire il perchè invia, quando richiama la funzione
, l'indirizzo del puntatore che punta al puntatore che punta alla lista. Un casino:grat: aiutatemi:cry:
la struttura è :
Codice:
typedef struct Node {
int data;
struct Node *next;
} node;
typedef node* list;
Codice:
node *createNode(int d) {
node *p;
p = new node; /* Creazione nuovo nodo */
p->data = d;
p->next = NULL;
return p;
}
ora la soluzione creata da me è la seguente
Codice:
void copyList(list h,list ch)
{ if(h==NULL)
ch=NULL;
else
{
ch=createNode(h->data)
copyList(h->next,ch->next)
}
}
mentre la soluzione data è la seguente:
Codice:
void copyList(list h, list *ch) {
if (h == NULL) *ch = NULL;
else {
(*ch) = createNode(h->dato);
copyList(h->next, &((*ch)->next));
}
}
Questo mi ha creato molta confusione a partire subito da
Codice:
list *ch
Non riesco poi a capire il perchè invia, quando richiama la funzione
Codice:
copyList(h->next, &((*ch)->next));