一个关于优先级的问题!
最近我在进行数据结构课程设计时我写了如下一个关于算术表达式的运算符的堆栈:
int order(char operator)
{
switch(operator)
{
case '+' :
case '-' :
return 1;
case '*' :
case '/' :
return 2;
}
}
此表达式用纯c语言编写在turboc2.0下进行不带括号的表达式计算时毫无问题,而课程设计要求能够进行带括号的表达式计算。但是清华大学出版的由严蔚敏和吴伟民老师编著的c语言版的数据结构里的有关优先级的关系如下:
————————————————————————
\ |
\ m2| + - * / ( ) #
m1\ |
\ |
----------------------------------------------
+ | > > < < < > >
- | > > < < < > >
* | > > > > < > >
/ | > > > > < > >
( | < < < < < =
) | > > > > > >
# | < < < < < =
----------------------------------------------
也就是说任意两个相继出现的算符m1和m2的优先关系至多是下面三种关系之一:
m1<m2 m1的优先权低于m2
m1=m2 m1的优先权等于m2
m1>m2 m1的优先权高于m2
但是此表中的“(”和“)”的优先关系我始终无法用表达式表示出来。
希望高人能在我的表达式中完成“(”和“)”的优先级的判断。