#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] == ' '
.