|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2006
Città: Napoli
Messaggi: 170
|
[C] Strano passaggio per riferimento
Salve ho questo pezzo di codice,
Codice:
446 void INORDER_TREE_WALK_DEL (treenode **node, int chi)
447 {
448 if (node!=NULL)
449 {
450 INORDER_TREE_WALK_DEL (&node->left,chi);
451 if (node->key>chi)
452 {
453 //printf("sto per eliminare il nodo %d\n",node->key);
454 TREE_DELETE (&node,node);
455 //printf("ho eliminato il nodo %d\n",node->key);
456 }
457
458 INORDER_TREE_WALK_DEL (&node->right,chi);
459 }
460 }
Codice:
# gcc34 ProvaInorderDEL.c -o ProvaInorderDEL ProvaInorderDEL.c: In function `INORDER_TREE_WALK_DEL': ProvaInorderDEL.c:450: error: request for member `left' in something not a structure or union ProvaInorderDEL.c:451: error: request for member `key' in something not a structure or union ProvaInorderDEL.c:454: warning: passing arg 1 of `TREE_DELETE' from incompatible pointer type ProvaInorderDEL.c:454: warning: passing arg 2 of `TREE_DELETE' from incompatible pointer type ProvaInorderDEL.c:458: error: request for member `right' in something not a structure or union |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Mar 2006
Città: Napoli
Messaggi: 170
|
si ho provato cn le parentesi,ma l'errore è uguale.
il tipo treenode è corretto. il problema è il passaggio per riferimento,anche perchè se passo per valore la funzione mi funziona,ma i valori ritornati non sono quelli desiderati. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2006
Città: Napoli
Messaggi: 170
|
si ho visto,il problema resta il passaggio del valore node che deve essere per riferimento. usare *node nn mi è utile.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Hai provato così?
Codice:
&((*node)->right) |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Mar 2006
Città: Napoli
Messaggi: 170
|
grazie per la risposta mi è servita
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:39.



















