我的目标是将中缀表达式转换为后缀表达式。
此行有问题:
while(precedence(stack[top])>=precedence(symbol))
当条件为++
或**
或/
或--
时,(并且应该)满足条件,因为它从左开始检查,但在有权力的情况下{ {1}})从右边开始。如果功率加倍(^
,我不想进入此循环。
in while(precedence(stack [top])> = precedence(symbol))中的简单操作,如果顶部的运算符是(^)而符号的运算符是(^)我不想输入while循环,我将删除这种情况是因为它是错误的,但我不知道如何。
C ++:
^^
答案 0 :(得分:0)
在while(precedence(stack [top])> = precedence(symbol))中简单输入,如果顶部的运算符是(^)而符号的运算符是(^),我不想进入while循环
使用
while (precedence(stack[top]) >= precedence(symbol) && stack[top] != '^' && symbol != '^')
在条件中添加&&
将使它检查堆栈顶部的运算符和符号都不是'^'
。
您也可以这样做
// ...
case '^':
if (stack[top] != '^' && symbol != '^')
while(precedence(stack[top])>=precedence(symbol))
{
temp=pop();
postfix[pos++]=temp;
}
// ...