//Precede是判定运算符栈的栈顶运算符与读入运算符之间优先关系的函数
char Precede(char a,char b){ //因为返回值为 < = > 符号,所以返回值类型为 char
//这里的 a 为栈顶运算符 ,b 是读入的运算符
//写这个函数的核心就是将两者比大小的所有情况都列出来,并且返回 < = > 符号即可
//以下开始列举所有的情况
if(a=='#'){
if(b=='#'){
return '=';
}else{
return '<'; //除了读入字符是#的情况,其余情况都是栈顶元素优先级较低,返回 <
}
}
//当栈顶元素为 + 或者 - 时,情况一样
if(a=='+'||a=='-'){
if(b=='+'||b=='-'||b==')'||b=='#'){ //这种情况是栈顶优先级较高,返回 >
return '>';
}else{
return '<';
}
}
//当栈顶元素为 * 或者 / 时,情况一样
if(a=='*'||a=='/'){
if(b=='('){
return '<';
}else{
return '>';
}
}
//当栈顶元素为 ( 时,情况如下
if(a=='('){
if(b==')'){
return '=';
}else{
return '<';
}
}
//当栈顶元素为 ) 时,情况如下
if(a==')'){
return '>';
}
}