实 验 报 告
6
第一步:预处理 预处理,去除中缀表达式中条件->中的>,和双条件<=>中的= 和 > ,这样,所有的运算符只是一个字符,后期处理起来更加方便。 void ddd() { string::iterator i=zhong.begin(); //string类迭代器,需在头文件加入#include
flag=1; break; } } } } 第二步:将中缀表达式转换后缀表达式 利用栈和优先级函数来将中缀表达式转换成后缀表达式,此函数另一个功能是将中缀表达式中所有出现过的字母变量都保存包名为alpha的string类中(string类为STL中的string,需要在头文件加入#include
{ } int isp(char a) //栈内优先级 { if(a=='#') return 0; if(a=='(') return 1; if(a=='!') return 11; if(a=='&') return 9; if(a=='|') return 7; if(a=='-') return 5; if(a=='<') return 3; if(a==')') return 12; if(a=='#') return 0; if(a=='(') return 12; if(a=='!') return 10; if(a=='&') return 8; if(a=='|') return 6; if(a=='-') return 4; if(a=='<') return 2; if(a==')') return 1; } 9
void change() //中缀表达式转换后缀表达式 { int j=0; stack
hou[j++]=ch; //并且加入到后缀表达式字符串中 if(alpha.find(ch)==-1) { } alpha.push_back(ch);