Chuck94
11-02-2015, 16:57
Mi è stato assegnato l'esercizio di scrivere una funzione che copi una lista.
la struttura è :
typedef struct Node {
int data;
struct Node *next;
} node;
typedef node* list;
la funzione crea lista è:
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
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:
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 list *ch ... un puntatore a puntatore? e se si perchè?
Non riesco poi a capire il perchè invia, quando richiama la funzione copyList(h->next, &((*ch)->next));, l'indirizzo del puntatore che punta al puntatore che punta alla lista. Un casino:doh: aiutatemi:cry:
la struttura è :
typedef struct Node {
int data;
struct Node *next;
} node;
typedef node* list;
la funzione crea lista è:
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
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:
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 list *ch ... un puntatore a puntatore? e se si perchè?
Non riesco poi a capire il perchè invia, quando richiama la funzione copyList(h->next, &((*ch)->next));, l'indirizzo del puntatore che punta al puntatore che punta alla lista. Un casino:doh: aiutatemi:cry: