|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2014
Messaggi: 17
|
copia di una lista [c/c++]
Mi è stato assegnato l'esercizio di scrivere una funzione che copi una lista.
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;
}
Codice:
void copyList(list h,list ch)
{ if(h==NULL)
ch=NULL;
else
{
ch=createNode(h->data)
copyList(h->next,ch->next)
}
}
Codice:
void copyList(list h, list *ch) {
if (h == NULL) *ch = NULL;
else {
(*ch) = createNode(h->dato);
copyList(h->next, &((*ch)->next));
}
}
Codice:
list *ch Non riesco poi a capire il perchè invia, quando richiama la funzione Codice:
copyList(h->next, &((*ch)->next)); aiutatemi |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Sep 2006
Messaggi: 1539
|
Quote:
Puntatore di un puntatore perché in questo modo può modificare il puntatore originale. Nella tua versione, quando assegni ch = NULL visto che questo è passato per valore non modifica il puntatore che hai passato alla funzione &((*ch)->next) Deve prendere il nodo puntato dal puntatore ch (*ch) Il membro next ->next e infine prendere indirizzo del puntatore (*ch)->next &((*ch)->next) |
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jun 2014
Messaggi: 17
|
Ok ora mi è più chiaro, grazie mille.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:27.










aiutatemi









