【数据结构】中缀表达式转换后缀表达式
发布时间:2020-12-15 06:32:20 所属栏目:安全 来源:网络整理
导读:我们平时写的数学表达式都是中缀表达式,如:a+b*c+(d*e+f)*g 现在要用计算机来实现这样的表达式,可以转换成后缀表达式再进行运算。自己写了一段代码如下: #include iostream #include stackusing namespace std; void midtotail(char *a){stackchar c;whi
我们平时写的数学表达式都是中缀表达式,如:a+b*c+(d*e+f)*g 现在要用计算机来实现这样的表达式,可以转换成后缀表达式再进行运算。自己写了一段代码如下: #include <iostream> #include <stack> using namespace std; void midtotail(char *a) { stack<char> c; while (*a!=' ') { 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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |