Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - errore di segmentazione
Forum - C/C++ - errore di segmentazione

Avatar
zEuSsE (Normal User)
Newbie


Messaggi: 3
Iscritto: 03/09/2009

Segnala al moderatore
Postato alle 14:58
Giovedì, 03/09/2009
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5.  
  6. class node{
  7.         node* right;
  8.         node* left;
  9.         node* p;
  10.         int key;
  11.         public:
  12.                 node(){};
  13.                 node(node* r,node* l,node* f,int key){};               
  14.                 //operazioni di set
  15.         void set_r(node* r){right=r;};
  16.                 void set_l(node* l){left=l;};
  17.                 void set_p(node* f){p=f;};
  18.                 void set_k(int k){key=k;};
  19.                 //operazioni di get
  20.                 node* get_r(){return right;};
  21.                 node* get_l(){return left;};
  22.                 node* get_p(){return p;};
  23.                 int get_k(){return key;};
  24.                
  25. };
  26.  
  27. class tree{
  28.       node* root;
  29.       public:
  30.                  tree(){/*costruttore*/};
  31.                      ~tree(){/*distruttore*/};
  32.              node* search(int x){};
  33.              bool insert(node* z);
  34.              bool cancel(int x){/*anche la cancellazione è fatta in base ad una chiave*/};
  35. };
  36.  
  37.  
  38. bool tree::insert(node* z){
  39.      node* x=root;
  40.      node* y=0;
  41.      while(x!=0) {
  42.                  y=x;
  43.                  if (x->get_k()<z->get_k()) x=x->get_r();
  44.                  else x=x->get_l();
  45.                  }
  46.      z->set_p(y);
  47.      if (y=0) root=z;
  48.      else if (y->get_k()<z->get_k()) root->set_r(z);
  49.      else root->set_l(z);
  50. };
  51.    
  52. int main(){
  53.     node* n;
  54.     n=new node(0,0,0,5);
  55.     tree T;
  56.     T.insert(n);
  57. };



Viene compilato tutto bene senza errori però nel debug mi dà un errore di segmentazione

help!! :d

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 1:53
Venerdì, 04/09/2009
Il fatto che venga compilato correttamente non vuole dire nulla. Significa solo che non ci sono errori di sintassi. Il problema è che non allochi la memoria necessaria a creare il nuovo oggetto...

PM Quote