В чем разница между узлом * и * узлом? - PullRequest
0 голосов
/ 17 марта 2019

В приведенной ниже реализации двоичного дерева в C ++, в чем разница использования указателя узла * и * узла. Я слаб в реализации указателей.

struct node  
{ 
    int data; 
    struct node *left; 
    struct node *right; 
}; 

struct node* newNode(int data)
{ 

  struct node* node = (struct node*)malloc(sizeof(struct node)); 

  node->data = data; 

  node->left = NULL; 
  node->right = NULL; 
  return(node); 
} 


int main() 
{ 
  struct node *root = newNode(1);   
  root->left        = newNode(2); 
  root->right       = newNode(3);

  root->left->left  = newNode(4); 

  getchar(); 
  return 0; 
}

1 Ответ

0 голосов
/ 17 марта 2019

Довольно плохая практика - использовать одинаковые имена для типов данных и имен объектов.

struct structnode  
{ 
    int data; 
    struct structnode *left; 
    struct structnode *right; 
}; 

struct structnode* newNode(int data)
{ 

  struct structnode* node = (struct node*)malloc(sizeof(struct node)); 

  node->data = data; 

  node->left = NULL; 
  node->right = NULL; 
  return(node); 
} 


int main() 
{ 
  struct structnode *root = newNode(1);   
  root->left        = newNode(2); 
  root->right       = newNode(3);

  root->left->left  = newNode(4); 

  getchar(); 
  return 0; 
 }

И теперь неразбериха исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...