中缀表达式转前缀表达式
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 04:04:22
中缀表达式转前缀表达式
要求:表达式包含6种操作符: +, -, *, /, (, )
(1) 先计算括号内,后计算括号外;(2) 在无括号或同层括号内,先进行乘除运算,后进行加减运算,即乘除运算的优先级高于加减运算的优先级;(3) 同一优先级运算,从左向右依次进行.
例如:
输入 中缀表达式:A+B*(C-D)-E/F
输出 前缀表达式:-+A*B-CD/EF(括号不用输 出)
需要运用栈的知识来编~~~~急~~~~
要求:表达式包含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
#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
前缀、中缀、后缀表达式是怎样的?
中缀表达式转后缀表达式
PASCAL 中 前缀表达式与中缀表达式间,以及后缀表达式与中缀表达式间如何实现转换?
前缀、中缀、后缀表达式是怎样的?如题
数据结构 前缀表达式 中缀表达式 后缀表达式各是什么啊?怎么相互转化呢?
中缀表达式为:5*x-3+b/x^2 的前缀 后缀表达式分别是什么?
中缀表达式 变 后缀表达式
已知二叉树的前缀表达式为ABCDE,中缀表达式为BDCEA,后缀表达式怎么求出来?有何方法?
算术表达式能实现前缀后缀和中缀的表达是求值设计表达式的存储结构能求出结果
后缀表达式如何转成中缀表达式?是后转中!
几个后缀中缀 表达式互转 的表达式: 1. 后缀转中缀 24 8 + 3 * 4 10 7 - * / @ 2. 中缀转
用堆栈实现将中缀表达式转化为后缀表达式