Vuoi dire che il campo
value di nodolista
punta ad un nodo?
Vuoi dire che il campo
value di nodolista
punta ad un nodo?
allora..Originariamente inviato da oregon
Vuoi dire che il campo
value di nodolista
punta ad un nodo?
io sono in una funzione dove ho come parametro in input un puntatore a un nodo: *root
questo nodo root ha nel suo campo children una lista (list children).
questa lista contiene altri nodi (in pratica č un albero n-ario).
il mio problema č che riesco a vedere questi nodi "figli" infatti riesco a contarli.. ma non riesco ad accedere ai loro campi interni, come il campo name..
io pensavo di poter accedere al nodo contenuto nella lista children in questo modo:
node figlio = (node)root->children->value;
printf("%s\n",figlio->name);
ma quando vado a stampare mi stampa: ų²
Allora
node FIGLIO = (node)(PADRE->children->value);
printf("%s\n", FIGLIO->name);
P.S. Ovviamente parto dal presupposto che le strutture a cui punti (sia la lista che la stringa name, esistano e siano allocate ...)
abbiamo scritto la stessa cosa.. ma non funziona..mistampa quel valore strano ų²Originariamente inviato da oregon
Allora
node FIGLIO = (node)(PADRE->children->value);
printf("%s\n", FIGLIO->name);
possibile che non va bene perche padre (o root come ho scritto io) non č un nodo ma un puntatore a un nodo??
ps: si si č tutto gia allocato ed esistente..
L'accesso e' corretto ...Originariamente inviato da jacopos81
abbiamo scritto la stessa cosa.. ma non funziona..mistampa quel valore strano ų²
possibile che non va bene perche padre (o root come ho scritto io) non č un nodo ma un puntatore a un nodo??
Devi pero' essere sicuro che le strutture collegate tramite i puntatori siano state create ed esistano in memoria.
Come hai creato root, la lista e il nodo collegato nella lista? Il problema e' nella creazione ...
l'albero sono sicuro che č creato correttamente, anche perche fatto tramite delle funzioni di inserimento, fatte dal prof..
Non per contraddirti ma il problema non e' nell'accesso al nodo figlio (perche' si fa in quel modo) ...
Il problema e' nel contenuto del nodo figlio ... insomma, secondo me il problema e' nell'inserimento ...
Fai un progetto di test che crea un solo elemento figlio e la stringa name dell'elemento figlio e provalo ...
provo a fare questo test..
Guarda ... ho scritto queste linee di codice preparando correttamente le strutture e accedendo come ti ho detto ... e naturalmente funziona ...
Ho solo fatto la distinzione nel nome della struttura _node e quella del suo puntatore node, ma non e' questo il problema.codice:node l = new _node; l->name = new char[20]; strcpy(l->name, "Paolo Rossi"); list nl = new NodoLista; nl->value = l; nl->next = NULL; node root = new _node; root->children = nl; ////////////////////////////////////////// node FIGLIO = (node)root->children->value; printf("%s\n", FIGLIO->name); ////////////////////////////////////////// delete nl; delete l; delete root;
Se non usi C++ ma C, allora usa malloc e free ...