我们平时写的数学表达式都是中缀表达式,如:a+b*c+(d*e+f)*g
现在要用计算机来实现这样的表达式,可以转换成后缀表达式再进行运算。自己写了一段代码如下:
#include <iostream> #include <stack> using namespace std; void midtotail(char *a) { stack<char> c; while (*a!='\0') { if(*a >= '0' && *a <= '9') cout<<*a; else if(*a >= 'a' && *a <= 'z') cout<<*a; else { if(c.empty() || *a == '(' || *a == '*' || *a == '/') c.push(*a); else if (*a == ')') { while (c.top()!= '(') { cout<<c.top(); c.pop(); } c.pop(); } else if (*a == '+' || *a == '-') { if (c.top() != '(') { while (!c.empty() && c.top()!= '(') { cout<<c.top(); c.pop(); } } c.push(*a); } } a++; } while (!c.empty()) { cout<<c.top(); c.pop(); } } int main() { //char a[] = "a+b*c+(d*e+f)*g"; char *a = new char[30]; cout<<"请输入一个中缀表达式:"; cin>>a; cout<<"输入的中缀表达式是:"; cout<<a<<endl; cout<<"后缀表达式是:"; midtotail(a); cout<<endl; delete [] a; return 0; }