中缀表达式转前缀表达式
中缀表达式转前缀表达式
要求:表达式包含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 ; };
boolPush(char a)
{
if(!IsFull())
c[++top] = a;
else
return false;
return true;
}
boolpop(char &a)
{
if(!IsEmpty())
a = c[top--];
else
return false;
return true;
}
boolgetTop(char &a)
{
if(!IsEmpty())
a = c[top];
else
return false;
return true;
}
boolIsEmpty()
{
return top == -1 ? true:false ;
}
boolIsFull()
{
return top == (maxSize-1) ? true:false ;
}
private:
char c[maxSize];
inttop;
};
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