Сравнение данных, содержащихся в узле двоичного дерева с символами, с другим символом

#c #string #structure #binary-tree

#c #строка #структура #двоичное дерево

Вопрос:

Я создал программу, которая превращает математическое выражение в двоичное дерево. Затем мне нужно изменить дерево в зависимости от данных в узлах, но что-то не работает в моем коде, и я думаю, что проблема заключается в неправильном сравнении данных с узла с символом. Например, я ввожу строку 2 * (x 1) 3. У корня дерева должно быть» «. Вот фрагмент кода, который иллюстрирует мою проблему:

 coutlt;lt; tree -gt; data lt;lt;endl; // it prints:   if (tree -gt; data == " ") {  coutlt;lt; "YES" lt;lt;endl; } else {  coutlt;lt; "NO ";  coutlt;lt; tree -gt; data lt;lt;endl; } // it prints: NO    

Я попытался изменить » » на» «, но это приводит к ошибке: ISO C запрещает сравнение указателя и целого числа. Моя структура узлов выглядит так (может быть, это тоже неправильно???):

 struct node {  char data[500];  node *left, *right; };  

Не могли бы вы, пожалуйста, сказать мне, как правильно написать это сравнение?

Комментарии:

1. В if заявлении tree -gt; data == " " сравнивается адрес data (это массив, поэтому без индекса вы ссылаетесь на адрес массива) с адресом постоянной строки » «. Вместо этого вы, вероятно, хотите tree-gt;data[0] == ' ' .