对于一个作业,我们给出了一个反向波兰符号的方程。对于这个例子,我将使用:2 3 8 * + $
is$
用于表示表达式的结尾。使用堆栈,我们输出答案。
我一直在使用:
getline(cin, input, '&');
input.c_str();
读入方程式,然后将其转换为 c_string,这样我就可以查看输入中的各个元素。
之后,我需要检查一些事情。如果元素是数字,我需要将其推入堆栈。如果是空白,我需要跳过它。
if (isdigit(input[i]))
{
push();
i++;
}
else if (isspace(input[i]))
{
i++;
}
现在是什么让我卡住了。如果我点击一个运算符(在这种情况下*
),我需要从堆栈中弹出顶部的两个元素并“操作它们”并将结果推回堆栈。但是,我不知道有什么可以让我认识到他们是操作员。这可能是一个愚蠢的问题,但我们将不胜感激。