gpt4 book ai didi

c++ - 使用堆栈构建表达式树

转载 作者:行者123 更新时间:2023-11-28 02:07:21 25 4
gpt4 key购买 nike

我正在尝试编写一个表达式树函数,它接受一个字符数组表达式并输出前缀、中缀和后缀版本。我已经编写了这段代码,它没有抛出任何错误,但是运行时计算值不会打印出来。我试图调试该功能,但仍然无法提出解决方案。有谁能给我任何关于我在这方面做错了什么的提示吗?

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 函数,如果没有任何问题,那么它一定没有正确链接到我的中序、前序和后序函数。谢谢!

最佳答案

这可能是一个复制粘贴错误,但您正在使用 i 就好像它是一个 char

我猜你想改用 input[i] ,至少在你的 if 语句中。

关于c++ - 使用堆栈构建表达式树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36981347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com