Я пытаюсь написать функцию дерева выражений, которая принимает выражение символьного массива и выводит префикс, инфикс и постфиксную версию. Я написал этот код, и он не вызывает никаких ошибок, но при запуске рассчитанные значения не распечатываются. Я попытался отладить функцию, но до сих пор не могу найти решение. Кто-нибудь может дать мне какие-либо советы о том, что я делаю неправильно с этим?Использование стека для построения дерева выражений
void Expression_Tree::build_expression_tree(char input[], int size)
{
ETNode *temp, *t1, *t2;
for (int i = 0; i < size; i++)
{
if(!(i == '+' || i == '-' || i == '*' || i == '/' || i == '^')) {
temp = new ETNode;
temp->left = temp->right = NULL;
temp->input = i;
tree_stack.push(temp);
}
else {
temp = new ETNode;
temp->left = temp->right = NULL;
temp->input = i;
t1 = tree_stack.top();
tree_stack.pop();
t2 = tree_stack.top();
tree_stack.pop();
temp->right = t1;
temp->left = t2;
tree_stack.push(temp);
}
}
temp = tree_stack.top();
tree_stack.pop();
}
Я только включил функцию build_expression_tree, если нет ничего считается неправильным с этим, то это не должно быть ссылок на мой заказовМои, предзаказ и функцию postorder правильно. Благодаря!
Обычный способ в C++ - использовать конструктор для инициализации членов (здесь: 'ETNode'), не позволяя коду пользователя выполнять инициализацию. – stefaanv
@stefaanv У меня есть класс ETNode также – user6276841
Итак, почему вы устанавливаете левый и правый указатели на NULL в коде пользователя? – stefaanv