我们平时写的数学表达式都是中缀表达式,如: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; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。