作业帮 > 综合 > 作业

中缀表达式转前缀表达式

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 04:04:22
中缀表达式转前缀表达式
要求:表达式包含6种操作符: +, -, *, /, (, )
(1) 先计算括号内,后计算括号外; (2) 在无括号或同层括号内,先进行乘除运算,后进行加减运算,即乘除运算的优先级高于加减运算的优先级; (3) 同一优先级运算,从左向右依次进行.
例如:
输入 中缀表达式:A+B*(C-D)-E/F
输出 前缀表达式:-+A*B-CD/EF(括号不用输 出)
需要运用栈的知识来编~~~~急~~~~
中缀表达式转前缀表达式
全是自己写的~~给分~~
#include
#include
using namespace std;
#define maxSize 100
class Stack{
public:
Stack() {top = -1 ; };
bool Push(char a)
{
if(!IsFull())
c[++top] = a;
else
return false;
return true;
}
bool pop(char &a)
{
if(!IsEmpty())
a = c[top--];
else
return false;
return true;
}
bool getTop(char &a)
{
if(!IsEmpty())
a = c[top];
else
return false;
return true;
}
bool IsEmpty()
{
return top == -1 ? true:false ;
}
bool IsFull()
{
return top == (maxSize-1) ? true:false ;
}
private:
char c[maxSize];
int top;
};
int isp(char a)
{
if(a == '#')
return 0;
if(a == '(')
return 6;
if(a == '*' || a == '/')
return 4;
if(a == '+' || a == '-')
return 2;
if(a == ')')
return 1;
return false;
}
int icp(char a)
{
if(a == '#')
return 0;
if(a == '(')
return 1;
if(a == '*' || a == '/')
return 5;
if(a == '+' || a == '-')
return 3;
if(a == ')')
return 6;
return false;
}
void main()
{
cout