对于赋值,我们给出了一个反向波兰表示式。对于这个例子,我将使用:2 3 8 * + $
$
用于表示表达式的结尾。使用堆栈,我们输出答案。搜索运算符的cstring
我一直在使用:
getline(cin, input, '&');
input.c_str();
方程中阅读,然后把它变成一个C_STRING所以我可以看看输入的单个元素。
之后,我需要检查几件事情。如果元素是数字,我需要将它推到堆栈上。如果是空格,我需要跳过它。
if (isdigit(input[i]))
{
push();
i++;
}
else if (isspace(input[i]))
{
i++;
}
现在是我卡住了。如果我碰到一个操作员(在这种情况下为*
),我需要弹出堆栈顶部的两个元素并“操作它们”并将结果返回到堆栈。但是,我不知道任何能够让我认识到他们是经营者的事情。这可能是一个愚蠢的问题,但帮助将不胜感激。
只是手边,你的输入是否保证被空白分开? – WhozCraig
@WhozCraig Yessir,每个值之间总会有一个空格。 – ViscousRandom
如果你输入包含多位数字:'12 321 + $'? – PiotrNycz