PROBLEMA copia di una lista [c/c++]

Chuck94

Nuovo Utente
52
1
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;
la funzione crea lista è:
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
... un puntatore a puntatore? e se si perchè?
Non riesco poi a capire il perchè invia, quando richiama la funzione
Codice:
copyList(h->next, &((*ch)->next));
, l'indirizzo del puntatore che punta al puntatore che punta alla lista. Un casino:grat: aiutatemi:cry:
 

sLN

Nuovo Utente
59
5
CPU
Intel i5 4670@3.40GHz
Scheda Madre
AsRock h87 Pro4
HDD
WD Caviar Blue 1TB
RAM
Ballistix Sport XT 2x4 GB 1600 MHz CL9
GPU
Sapphire r9 270x
Audio
Integrata Realtek ALC892
Monitor
Asus VG248QE 144Hz
PSU
CM b600 600W
Case
Aerocool GT Advance White
OS
Windows 7 64bit / Ubuntu 14.04 LTS
Ciao

list *ch

Viene passata cosi per il fatto che ti permette di controllare COMPLETAMENTE (attraverso il SUO indirizzo) il puntatore passato.
Invece list ch, ch va a puntare ciò che punta il puntatore che gli hai dato, ma sono due puntatori diversi con due indirizzi diversi che puntano la stessa cosa.
Invece ch ha bisogno di puntare al puntatore che gli viene passato per potergli dire da dove deve puntare.

Non so se mi spiego..
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili